microcode/x11base.c (char_ptr_to_prop_data_32): Fix for 64bits.
authorMatt Birkholz <puck@birchwood-abbey.net>
Tue, 7 Jun 2016 18:31:46 +0000 (11:31 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Tue, 7 Jun 2016 18:31:46 +0000 (11:31 -0700)
Thanks to Patric Jonsson <patjon@kth.se>.  32bit property data, though
CARD32, is returned in an array of longs (64bit elements on 64bit
machinery).

src/microcode/x11base.c
src/x11/x11base.scm

index d3f43a54b4151521650cb5445932f861360e751d..427c2e1899ae6ffc6b61755ae661eafdf8fd54b4 100644 (file)
@@ -2493,7 +2493,7 @@ char_ptr_to_prop_data_32 (const unsigned char * data, unsigned long nitems)
   SCHEME_OBJECT result = (allocate_marked_vector (TC_VECTOR, nitems, 1));
   unsigned long index;
   for (index = 0; (index < nitems); index += 1)
-    VECTOR_SET (result, index, (ulong_to_integer (((CARD32 *) data) [index])));
+    VECTOR_SET (result, index, (ulong_to_integer ((CARD32) ((long *) data) [index])));
   return (result);
 }
 
index a98d29a53c2f0dd214ae25dcded40383163efce5..55b975c3665f20ca83d05839b833a956284a992a 100644 (file)
@@ -797,7 +797,7 @@ USA.
       (if (< index length)
          (begin
            (vector-set! result index (c-> scan "CARD32"))
-           (alien-byte-increment! scan (c-sizeof "CARD32"))
+           (alien-byte-increment! scan (c-sizeof "long"))
            (loop (1+ index)))))
     result))