[pypy-commit] pypy default: Fix test to also work in lldebug mode (it used to fail because

arigo noreply at buildbot.pypy.org
Mon Mar 16 17:25:32 CET 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r76411:7926ef4fb172
Date: 2015-03-16 17:21 +0100
http://bitbucket.org/pypy/pypy/changeset/7926ef4fb172/

Log:	Fix test to also work in lldebug mode (it used to fail because the C
	hack to allocate does not track the allocation)

diff --git a/rpython/rtyper/lltypesystem/test/test_rffi.py b/rpython/rtyper/lltypesystem/test/test_rffi.py
--- a/rpython/rtyper/lltypesystem/test/test_rffi.py
+++ b/rpython/rtyper/lltypesystem/test/test_rffi.py
@@ -102,24 +102,19 @@
         #include <string.h>
         #include <src/mem.h>
 
-        char *f(char* arg)
+        void f(char *target, char* arg)
         {
-            char *ret;
-            /* lltype.free uses OP_RAW_FREE, we must allocate
-             * with the matching function
-             */
-            OP_RAW_MALLOC(strlen(arg) + 1, ret, char*)
-            strcpy(ret, arg);
-            return ret;
+            strcpy(target, arg);
         }
         """)
         eci = ExternalCompilationInfo(separate_module_sources=[c_source],
-                                      post_include_bits=['char *f(char*);'])
-        z = llexternal('f', [CCHARP], CCHARP, compilation_info=eci)
+                                     post_include_bits=['void f(char*,char*);'])
+        z = llexternal('f', [CCHARP, CCHARP], lltype.Void, compilation_info=eci)
 
         def f():
             s = str2charp("xxx")
-            l_res = z(s)
+            l_res = lltype.malloc(CCHARP.TO, 10, flavor='raw')
+            z(l_res, s)
             res = charp2str(l_res)
             lltype.free(l_res, flavor='raw')
             free_charp(s)


More information about the pypy-commit mailing list