Skip to content

Commit 46e0bf7

Browse files
committed
Fix reference counting in ProcessSystemExit. See https://en.delphipraxis.net/topic/11182-tpydelphiwrapper-memory-leaks/.
1 parent a6a8b29 commit 46e0bf7

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

Source/PythonEngine.pas

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6425,15 +6425,19 @@ procedure TPythonEngine.ListToSet( List : PPyObject; data : Pointer; size : Inte
64256425
end;
64266426

64276427
procedure TPythonEngine.CheckError(ACatchStopEx : Boolean = False);
6428+
64286429
procedure ProcessSystemExit;
64296430
var
64306431
errtype, errvalue, errtraceback: PPyObject;
64316432
SErrValue: string;
64326433
begin
6434+
// PyErr_Fetch clears the error. The returned python objects are new references
64336435
PyErr_Fetch(errtype, errvalue, errtraceback);
64346436
Traceback.Refresh(errtraceback);
64356437
SErrValue := PyObjectAsString(errvalue);
6436-
PyErr_Clear;
6438+
Py_XDECREF(errtype);
6439+
Py_XDECREF(errvalue);
6440+
Py_XDECREF(errtraceback);
64376441
raise EPySystemExit.CreateResFmt(@SPyExcSystemError, [SErrValue]);
64386442
end;
64396443

0 commit comments

Comments
 (0)