@@ -5570,9 +5570,7 @@ procedure TPythonEngine.RaiseError;
5570
5570
s_type := GetTypeAsString(err_type);
5571
5571
s_value := PyObjectAsString(err_value);
5572
5572
5573
- if (PyErr_GivenExceptionMatches(err_type, PyExc_SystemExit^) <> 0 ) then
5574
- raise Define( EPySystemExit.Create(' ' ), s_type, s_value )
5575
- else if (PyErr_GivenExceptionMatches(err_type, PyExc_StopIteration^) <> 0 ) then
5573
+ if (PyErr_GivenExceptionMatches(err_type, PyExc_StopIteration^) <> 0 ) then
5576
5574
raise Define( EPyStopIteration.Create(' ' ), s_type, s_value )
5577
5575
else if (PyErr_GivenExceptionMatches(err_type, PyExc_KeyboardInterrupt^) <> 0 ) then
5578
5576
raise Define( EPyKeyboardInterrupt.Create(' ' ), s_type, s_value )
@@ -6606,6 +6604,7 @@ procedure TPythonEngine.CheckError(ACatchStopEx : Boolean = False);
6606
6604
var
6607
6605
errtype, errvalue, errtraceback: PPyObject;
6608
6606
SErrValue: string;
6607
+ SystemExit: EPySystemExit;
6609
6608
begin
6610
6609
// PyErr_Fetch clears the error. The returned python objects are new references
6611
6610
PyErr_Fetch(errtype, errvalue, errtraceback);
@@ -6614,7 +6613,11 @@ procedure TPythonEngine.CheckError(ACatchStopEx : Boolean = False);
6614
6613
Py_XDECREF(errtype);
6615
6614
Py_XDECREF(errvalue);
6616
6615
Py_XDECREF(errtraceback);
6617
- raise EPySystemExit.CreateResFmt(@SPyExcSystemError, [SErrValue]);
6616
+
6617
+ SystemExit := EPySystemExit.CreateResFmt(@SPyExcSystemError, [SErrValue]);
6618
+ SystemExit.EValue := SErrValue;
6619
+ SystemExit.EName := ' SystemExit' ;
6620
+ raise SystemExit;
6618
6621
end ;
6619
6622
6620
6623
var
0 commit comments