]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed the double traceback when an exception happens in OnInit
authorRobin Dunn <robin@alldunn.com>
Fri, 5 Dec 2003 00:40:29 +0000 (00:40 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 5 Dec 2003 00:40:29 +0000 (00:40 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/include/wx/wxPython/wxPython_int.h
wxPython/src/helpers.cpp

index 1487a714abe0b37fd294dd488f5e3abbc3244bde..af510697269736ad73181bf8acecbe3408713ed4 100644 (file)
@@ -512,7 +512,8 @@ public:
     bool        findCallback(const char* name) const;
     int         callCallback(PyObject* argTuple) const;
     PyObject*   callCallbackObj(PyObject* argTuple) const;
-
+    PyObject*   GetLastFound() const { return m_lastFound; }
+    
 private:
     PyObject*   m_self;
     PyObject*   m_class;
index 24d16eb3521bdffc591d6c65b49d924ceb154bb6..46012aa7eeca9e6ecf3ac05622b166caba17c61f 100644 (file)
@@ -366,8 +366,16 @@ void wxPyApp::_BootstrapApp()
     
     // Call the Python wxApp's OnInit function
     if (wxPyCBH_findCallback(m_myInst, "OnInit")) {                
-        retval = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()"));
-        pyint = PyNumber_Int(retval);
+
+        PyObject* method = m_myInst.GetLastFound();
+        PyObject* argTuple = PyTuple_New(0);
+        retval = PyEval_CallObject(method, argTuple);
+        Py_DECREF(argTuple);
+        Py_DECREF(method);
+        if (retval == NULL)
+            goto error;
+        
+        pyint = PyNumber_Int(retval);        
         if (! pyint) {
             PyErr_SetString(PyExc_TypeError, "OnInit should return a boolean value");
             goto error;
@@ -1447,7 +1455,7 @@ int wxPyCallbackHelper::callCallback(PyObject* argTuple) const {
 }
 
 // Invoke the Python callable object, returning the raw PyObject return
-// value.  Caller should DECREF the return value and also call PyEval_SaveThread.
+// value.  Caller should DECREF the return value and also manage the GIL.
 PyObject* wxPyCallbackHelper::callCallbackObj(PyObject* argTuple) const {
     PyObject* result;