@@ -5570,9 +5570,7 @@ procedure TPythonEngine.RaiseError;
55705570      s_type := GetTypeAsString(err_type);
55715571      s_value := PyObjectAsString(err_value);
55725572
5573-       if  (PyErr_GivenExceptionMatches(err_type, PyExc_SystemExit^) <> 0 ) then 
5574-         raise Define( EPySystemExit.Create(' ' 
5575-       else  if  (PyErr_GivenExceptionMatches(err_type, PyExc_StopIteration^) <> 0 ) then 
5573+       if  (PyErr_GivenExceptionMatches(err_type, PyExc_StopIteration^) <> 0 ) then 
55765574        raise Define( EPyStopIteration.Create(' ' 
55775575      else  if  (PyErr_GivenExceptionMatches(err_type, PyExc_KeyboardInterrupt^) <> 0 ) then 
55785576        raise Define( EPyKeyboardInterrupt.Create(' ' 
@@ -6606,6 +6604,7 @@ procedure TPythonEngine.CheckError(ACatchStopEx : Boolean = False);
66066604  var 
66076605    errtype, errvalue, errtraceback: PPyObject;
66086606    SErrValue: string;
6607+     SystemExit: EPySystemExit;
66096608  begin 
66106609    //  PyErr_Fetch clears the error. The returned python objects are new references
66116610    PyErr_Fetch(errtype, errvalue, errtraceback);
@@ -6614,7 +6613,11 @@ procedure TPythonEngine.CheckError(ACatchStopEx : Boolean = False);
66146613    Py_XDECREF(errtype);
66156614    Py_XDECREF(errvalue);
66166615    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;
66186621  end ;
66196622
66206623var 
0 commit comments