mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-04 19:10:09 +01:00
Merge pull request #1347 from wxWidgets/errcheck-virtual-methods
Check for Python errors upon return from overloaded virtual methods
(cherry picked from commit 0e817cee59)
This commit is contained in:
@@ -268,7 +268,12 @@ def run():
|
||||
# an out parameter.
|
||||
m.virtualCatcherCode = """\
|
||||
PyObject *sipResObj = sipCallMethod(&sipIsErr, sipMethod, "D", editor, sipType_wxWindow, NULL);
|
||||
if (sipResObj == Py_None) {
|
||||
if (sipResObj == NULL) {
|
||||
if (PyErr_Occurred())
|
||||
PyErr_Print();
|
||||
sipRes = false;
|
||||
}
|
||||
else if (sipResObj == Py_None) {
|
||||
sipRes = false;
|
||||
} else {
|
||||
sipRes = true;
|
||||
|
||||
16
etg/grid.py
16
etg/grid.py
@@ -238,14 +238,19 @@ def run():
|
||||
result = sipCallMethod(0, sipMethod, "iiDN", row, col,
|
||||
const_cast<wxGrid *>(grid),sipType_wxGrid,NULL,
|
||||
new wxString(oldval),sipType_wxString,NULL);
|
||||
if (result == Py_None) {
|
||||
if (result == NULL) {
|
||||
if (PyErr_Occurred())
|
||||
PyErr_Print();
|
||||
sipRes = false;
|
||||
}
|
||||
else if (result == Py_None) {
|
||||
sipRes = false;
|
||||
}
|
||||
else {
|
||||
sipRes = true;
|
||||
*newval = Py2wxString(result);
|
||||
}
|
||||
Py_DECREF(result);
|
||||
Py_XDECREF(result);
|
||||
""" if pureVirtual else "", # only used with the base class
|
||||
)
|
||||
|
||||
@@ -332,7 +337,12 @@ def run():
|
||||
m.virtualCatcherCode = """\
|
||||
// virtualCatcherCode for GridTableBase.GetValue
|
||||
PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "ii", row, col);
|
||||
if (result == Py_None) {
|
||||
if (result == NULL) {
|
||||
if (PyErr_Occurred())
|
||||
PyErr_Print();
|
||||
sipRes = "";
|
||||
}
|
||||
else if (result == Py_None) {
|
||||
sipRes = "";
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -57,7 +57,12 @@ def run():
|
||||
PyObject *sipResObj = sipCallMethod(&sipIsErr, sipMethod, "DD",
|
||||
property, sipType_wxPGProperty, NULL,
|
||||
ctrl, sipType_wxWindow, NULL);
|
||||
if (sipResObj == Py_None) {
|
||||
if (sipResObj == NULL) {
|
||||
if (PyErr_Occurred())
|
||||
PyErr_Print();
|
||||
sipRes = false;
|
||||
}
|
||||
else if (sipResObj == Py_None) {
|
||||
sipRes = false;
|
||||
} else if (sipResObj && !sipIsErr) {
|
||||
sipParseResult(&sipIsErr, sipMethod, sipResObj, "(bH5)", &sipRes, sipType_wxPGVariant, &variant);
|
||||
|
||||
@@ -60,7 +60,8 @@ def run():
|
||||
method.virtualCatcherCode = """\
|
||||
// VirtualCatcherCode for wxTaskBarIcon.CreatePopupMenu
|
||||
PyObject *sipResObj = sipCallMethod(0, sipMethod, "");
|
||||
sipParseResult(0, sipMethod, sipResObj, "H0", sipType_wxMenu, &sipRes);
|
||||
if (!sipResObj || sipParseResult(0, sipMethod, sipResObj, "H0", sipType_wxMenu, &sipRes) < 0)
|
||||
PyErr_Print();
|
||||
if (sipRes) {
|
||||
sipTransferTo(sipResObj, Py_None);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user