This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author wenkat_s
Recipients theller, wenkat_s
Date 2009-12-14.17:10:39
SpamBayes Score 9.4015e-08
Marked as misclassified No
Message-id <1260810641.87.0.854694050504.issue7505@psf.upfronthosting.co.za>
In-reply-to
Content
The attached code is failing to convert None to Null. It is successful 
if the int* is shifted towards the beginning of argument list. The bug 
is actually in 32/64 bit pointers as the code works on a 32 bit system.

The bug disappears if I reduce the number of arguments to less than 10.

I created the so using the command - "gcc  -shared -fPIC  -o libtest.so 
libtest.c", (gcc (Debian 4.3.2-1.1) 4.3.2) 

The c file is as follows:

libtest.c
#include <stdint.h>
#include <stdio.h>


int32_t where ( int32_t a, int32_t c, int32_t d, int32_t e, int32_t f, 
int32_t g, int32_t h, int32_t *b, int32_t i, int32_t j, int32_t k, 
int32_t l)
{
    printf("b = %p\n", (void *)b);
    printf("a = %d, c = %d, d = %d, e = %d, f = %d, g = %d, h = %d, i = 
%d, j = %d, k = %d,  l = %d", a,c,d,e,f,g,h,i,j,k,l);

    return 100;

} /* where() */

Python Code:
import ctypes

libtest = ctypes.CDLL('./libtest.so')
where = libtest.where
where.restype = ctypes.c_int
where.argtypes = [ 
                    ctypes.c_int32, ctypes.c_int32, ctypes.c_int32,          
ctypes.c_int32, ctypes.c_int32, ctypes.c_int32, ctypes.c_int32,
                    ctypes.POINTER(ctypes.c_int32),
                    ctypes.c_int32, ctypes.c_int32, ctypes.c_int32, 
ctypes.c_int32,
                 ]


a = 7
b = None

status = where(a,a,a,a,a,a,a,b,a,a,a,a)
History
Date User Action Args
2009-12-14 17:10:42wenkat_ssetrecipients: + wenkat_s, theller
2009-12-14 17:10:41wenkat_ssetmessageid: <1260810641.87.0.854694050504.issue7505@psf.upfronthosting.co.za>
2009-12-14 17:10:40wenkat_slinkissue7505 messages
2009-12-14 17:10:39wenkat_screate