gpgscm: Fix compact vector encoding.
authorJustus Winter <justus@g10code.com>
Fri, 7 Apr 2017 10:27:47 +0000 (12:27 +0200)
committerJustus Winter <justus@g10code.com>
Fri, 7 Apr 2017 10:27:47 +0000 (12:27 +0200)
* tests/gpgscm/scheme-private.h (struct cell): Use uintptr_t for
'_flags'.  This way, '_flags' has the size of a machine word.
--

The compact vector representation introduced in 49e2ae65 requires that
we can tell apart pointers and type flags.  This did not work on
64-bit big-endian architectures.

Fixes a crash on 64-bit big-endian architectures.

Hat-tip-to: gniibe
Fixes-commit: 49e2ae65e892f93be7f87cfaae3392b50a99e4b1
Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/scheme-private.h

index abd89e8..fe50135 100644 (file)
@@ -3,6 +3,7 @@
 #ifndef _SCHEME_PRIVATE_H
 #define _SCHEME_PRIVATE_H
 
+#include <stdint.h>
 #include "scheme.h"
 /*------------------ Ugly internals -----------------------------------*/
 /*------------------ Of interest only to FFI users --------------------*/
@@ -42,7 +43,7 @@ typedef struct port {
 
 /* cell structure */
 struct cell {
-  unsigned int _flag;
+  uintptr_t _flag;
   union {
     struct {
       char   *_svalue;