Skip to content

Commit cbde9ae

Browse files
committed
Fix: Do correct error handling in 'PyObject_GetAttrString'.
1 parent bd6890e commit cbde9ae

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,11 @@ int PyObject_Print(PyObject* object, FILE* fd, int flags) {
592592
}
593593

594594
PyObject* PyObject_GetAttrString(PyObject* obj, const char* attr) {
595-
return to_sulong(truffle_read(to_java(obj), truffle_read_string(attr)));
595+
void* result = polyglot_invoke(PY_TRUFFLE_CEXT, "PyObject_GetAttr", to_java(obj), polyglot_from_string(attr, "utf-8"));
596+
if (result == ERROR_MARKER) {
597+
return NULL;
598+
}
599+
return to_sulong(result);
596600
}
597601

598602
int PyObject_SetAttrString(PyObject* obj, const char* attr, PyObject* value) {

graalpython/lib-graalpython/python_cext.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,11 @@ def PyObject_AsFileDescriptor(obj):
787787
return int(result)
788788

789789

790+
@may_raise
791+
def PyObject_GetAttr(obj, attr):
792+
return getattr(obj, attr)
793+
794+
790795
@may_raise(-1)
791796
def PyObject_SetAttr(obj, attr, value):
792797
setattr(obj, attr, value)

0 commit comments

Comments
 (0)