[pypy-commit] cffi cffi-1.0: fix test

arigo noreply at buildbot.pypy.org
Tue Apr 14 15:35:22 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: cffi-1.0
Changeset: r1697:acc5959cd6a8
Date: 2015-04-11 20:39 +0200
http://bitbucket.org/cffi/cffi/changeset/acc5959cd6a8/

Log:	fix test

diff --git a/new/parse_c_type.h b/new/parse_c_type.h
--- a/new/parse_c_type.h
+++ b/new/parse_c_type.h
@@ -1,4 +1,4 @@
-#include <stddef.h>
+#include <stdint.h>
 
 
 typedef void *_cffi_opcode_t;
diff --git a/new/realize_c_type.c b/new/realize_c_type.c
--- a/new/realize_c_type.c
+++ b/new/realize_c_type.c
@@ -34,6 +34,11 @@
 {
     PyObject *x, *y;
     _cffi_opcode_t op = opcodes[index];
+    if ((((uintptr_t)op) & 1) == 0) {
+        x = (PyObject *)op;
+        Py_INCREF(x);
+        return x;
+    }
 
     switch (_CFFI_GETOP(op)) {
 
@@ -42,7 +47,7 @@
         if (x == NULL)
             x = build_primitive_type(_CFFI_GETARG(op));
         Py_XINCREF(x);
-        return x;
+        break;
 
     case _CFFI_OP_POINTER:
         y = realize_c_type(ctx, opcodes, _CFFI_GETARG(op));
@@ -50,16 +55,18 @@
             return NULL;
         x = Py_BuildValue("sO", "pointer", y);
         Py_DECREF(y);
-        return x;
+        break;
 
     default:
         PyErr_Format(PyExc_NotImplementedError, "op=%d", (int)_CFFI_GETOP(op));
         return NULL;
     }
-}
 
-
-struct _cffi_type_context_s global_ctx = {
+    if (opcodes == ctx->types) {
+        Py_INCREF(x);
+        opcodes[index] = x;
+    }
+    return x;
 };
 
 
@@ -70,6 +77,7 @@
         return NULL;
 
     _cffi_opcode_t opcodes[100];
+    struct _cffi_type_context_s global_ctx = { NULL };
     struct _cffi_parse_info_s parse_info = {
         .ctx = &global_ctx,
         .output = opcodes,
diff --git a/new/test_realize_c_type.py b/new/test_realize_c_type.py
--- a/new/test_realize_c_type.py
+++ b/new/test_realize_c_type.py
@@ -1,7 +1,9 @@
 import os
 
 def setup_module():
-    os.system("python setup.py build_ext -i")
+    err = os.system("python setup.py build_ext -i")
+    if err != 0:
+        raise Exception(err)
     global realize_c_type
     import realize_c_type
 


More information about the pypy-commit mailing list