File tree Expand file tree Collapse file tree 1 file changed +12
-7
lines changed
graalpython/com.oracle.graal.python.cext/src Expand file tree Collapse file tree 1 file changed +12
-7
lines changed Original file line number Diff line number Diff line change @@ -402,18 +402,23 @@ Py_ssize_t PyTruffle_SUBREF(PyObject* obj, Py_ssize_t value) {
402
402
Py_ssize_t PyTruffle_bulk_SUBREF (PyObject * ptrArray [], Py_ssize_t values [], int64_t len ) {
403
403
int64_t i ;
404
404
PyObject * obj ;
405
+ Py_ssize_t value ;
405
406
406
407
for (i = 0 ; i < len ; i ++ ) {
407
408
obj = ptrArray [i ];
408
- Py_ssize_t new_value = ((obj -> ob_refcnt ) -= values [i ]);
409
- if (new_value == 0 ) {
410
- _Py_Dealloc (obj );
411
- }
409
+ value = values [i ];
410
+ /* IMPORTANT: 'value == 0' indicates we should not process the reference at all */
411
+ if (value > 0 ) {
412
+ Py_ssize_t new_value = ((obj -> ob_refcnt ) -= value );
413
+ if (new_value == 0 ) {
414
+ _Py_Dealloc (obj );
415
+ }
412
416
#ifdef Py_REF_DEBUG
413
- else if (new_value < 0 ) {
414
- _Py_NegativeRefcount (filename , lineno , op );
415
- }
417
+ else if (new_value < 0 ) {
418
+ _Py_NegativeRefcount (filename , lineno , op );
419
+ }
416
420
#endif
421
+ }
417
422
}
418
423
return 0 ;
419
424
}
You can’t perform that action at this time.
0 commit comments