[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19175] branches/blender2.5/blender/source /blender/python/intern: * errors in bpyui draw scripts were segfaulting

Campbell Barton ideasman42 at gmail.com
Mon Mar 2 21:18:31 CET 2009


Revision: 19175
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19175
Author:   campbellbarton
Date:     2009-03-02 21:18:29 +0100 (Mon, 02 Mar 2009)

Log Message:
-----------
* errors in bpyui draw scripts were segfaulting
* added PyLineSpit(), useful for debugging so you can easily find the 
line of the python script running.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_util.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_util.h

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c	2009-03-02 17:43:35 UTC (rev 19174)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c	2009-03-02 20:18:29 UTC (rev 19175)
@@ -168,10 +168,11 @@
 	if (bpy_run_script_init(C, sc)) {
 		PyGILState_STATE gilstate = PyGILState_Ensure();
 		PyObject *result = PyObject_CallObject( sc->script->py_draw, NULL );
-		PyGILState_Release(gilstate);
 		
 		if (result==NULL)
 			exit_pydraw(sc, 1);
+			
+		PyGILState_Release(gilstate);
 	}
 	return 1;
 }
@@ -183,10 +184,11 @@
 		PyGILState_STATE gilstate = PyGILState_Ensure();
 		
 		PyObject *result = PyObject_CallObject( sc->script->py_draw, NULL );
-		PyGILState_Release(gilstate);
 		
 		if (result==NULL)
 			exit_pydraw(sc, 1);
+			
+		PyGILState_Release(gilstate);
 	}
 	return 1;
 }

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_util.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_util.c	2009-03-02 17:43:35 UTC (rev 19174)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_util.c	2009-03-02 20:18:29 UTC (rev 19175)
@@ -162,6 +162,16 @@
 	fprintf(stderr, "\n");
 }
 
+void PyLineSpit(void) {
+	char filename[512];
+	int lineno;
+
+	PyErr_Clear();
+	BPY_getFileAndNum(&filename, &lineno);
+	
+	fprintf(stderr, "%s:%d\n", filename, lineno);
+}
+
 void BPY_getFileAndNum(char **filename, int *lineno)
 {
 	PyObject *getframe, *frame;

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_util.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_util.h	2009-03-02 17:43:35 UTC (rev 19174)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_util.h	2009-03-02 20:18:29 UTC (rev 19175)
@@ -35,4 +35,5 @@
 int BPY_flag_from_seq(BPY_flag_def *flagdef, PyObject *seq, int *flag);
 
 void PyObSpit(char *name, PyObject *var);
+void PyLineSpit(void);
 void BPY_getFileAndNum(char **filename, int *lineno);





More information about the Bf-blender-cvs mailing list