Skip to content

Commit 495d886

Browse files
committed
Add tests and fixes for 'PyLong_From/AsVoidPtr'.
1 parent cbf7eb8 commit 495d886

File tree

3 files changed

+34
-2
lines changed
  • graalpython

3 files changed

+34
-2
lines changed

graalpython/com.oracle.graal.python.cext/src/longobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ PyObject * PyLong_FromVoidPtr(void *p) {
109109

110110
UPCALL_ID(PyLong_AsVoidPtr);
111111
void * PyLong_AsVoidPtr(PyObject *obj){
112-
return (void *)UPCALL_CEXT_L(_jls_PyLong_AsVoidPtr, native_to_java(obj));
112+
return (void *)UPCALL_CEXT_PTR(_jls_PyLong_AsVoidPtr, native_to_java(obj));
113113
}
114114

115115
UPCALL_ID(PyLong_FromLongLong);

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_long.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,38 @@ def compile_module(self, name):
239239
cmpfunc=unhandled_error_compare
240240
)
241241

242+
test_PyLong_FromVoidPtrAllocated = CPyExtFunction(
243+
lambda args: int,
244+
lambda: ((None,),),
245+
code="""PyObject* PyLong_FromVoidPtrAllocated(PyObject* none) {
246+
void* dummyPtr = malloc(sizeof(size_t));
247+
return (PyObject*)Py_TYPE(PyLong_FromVoidPtr(dummyPtr));
248+
}
249+
""",
250+
resultspec="O",
251+
argspec='O',
252+
arguments=["PyObject* none"],
253+
cmpfunc=unhandled_error_compare
254+
)
255+
256+
test_PyLong_AsVoidPtrAllocated = CPyExtFunction(
257+
lambda args: True,
258+
lambda: ((None,),),
259+
code="""PyObject* PyLong_AsVoidPtrAllocated(PyObject* none) {
260+
void* dummyPtr = malloc(sizeof(size_t));
261+
PyObject* obj = PyLong_FromVoidPtr(dummyPtr);
262+
void* unwrappedPtr = PyLong_AsVoidPtr(obj);
263+
PyObject* result = unwrappedPtr == dummyPtr ? Py_True : Py_False;
264+
free(dummyPtr);
265+
return result;
266+
}
267+
""",
268+
resultspec="O",
269+
argspec='O',
270+
arguments=["PyObject* none"],
271+
cmpfunc=unhandled_error_compare
272+
)
273+
242274
test_PyLong_Check = CPyExtFunction(
243275
lambda args: isinstance(args[0], int),
244276
lambda: (

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/CExtNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ long runGeneric(Object value) {
11501150
private CastToIndexNode getIntNode() {
11511151
if (intNode == null) {
11521152
CompilerDirectives.transferToInterpreterAndInvalidate();
1153-
intNode = CastToIndexNode.createOverflow();
1153+
intNode = insert(CastToIndexNode.createOverflow());
11541154
}
11551155
return intNode;
11561156
}

0 commit comments

Comments
 (0)