[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32728] trunk/blender/source: workaround for python bug [#24400] If Script is executed with TEXT Editor, it becomes an error.

Campbell Barton ideasman42 at gmail.com
Wed Oct 27 08:05:36 CEST 2010


Revision: 32728
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32728
Author:   campbellbarton
Date:     2010-10-27 08:05:22 +0200 (Wed, 27 Oct 2010)

Log Message:
-----------
workaround for python bug [#24400] If Script is executed with TEXT Editor, it becomes an error.
having the blend file as a part of the __file__ variable is not essential, this is fixed in python 3.2 so add an ifdef and don't use the blend file path for py older then 3.2.

Modified Paths:
--------------
    trunk/blender/source/blender/python/generic/bpy_internal_import.c
    trunk/blender/source/blender/python/generic/bpy_internal_import.h
    trunk/blender/source/blender/python/intern/bpy_interface.c
    trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp

Modified: trunk/blender/source/blender/python/generic/bpy_internal_import.c
===================================================================
--- trunk/blender/source/blender/python/generic/bpy_internal_import.c	2010-10-27 02:22:55 UTC (rev 32727)
+++ trunk/blender/source/blender/python/generic/bpy_internal_import.c	2010-10-27 06:05:22 UTC (rev 32728)
@@ -26,7 +26,13 @@
  * ***** END GPL LICENSE BLOCK *****
 */
 
+#include <Python.h>
+#include "compile.h"	/* for the PyCodeObject */
+#include "eval.h"		/* for PyEval_EvalCode */
+#include "osdefs.h"		/* for 'SEP' */
+
 #include "bpy_internal_import.h"
+
 #include "DNA_text_types.h"
 
 #include "MEM_guardedalloc.h"
@@ -62,16 +68,17 @@
 /* returns a dummy filename for a textblock so we can tell what file a text block comes from */
 void bpy_text_filename_get(char *fn, Text *text)
 {
-	sprintf(fn, "%s/%s", text->id.lib ? text->id.lib->filepath : G.main->name, text->id.name+2);
-	
-	/* XXX, this is a bug in python's Py_CompileString()!
+#if PY_VERSION_HEX >=  0x03020000
+	sprintf(fn, "%s%c%s", text->id.lib ? text->id.lib->filepath : G.main->name, SEP, text->id.name+2);
+#else
+	/* this is a bug in python's Py_CompileString()!, fixed for python 3.2.
 	 the string encoding should not be required to be utf-8
-	 reported: http://bugs.python.org/msg115202
-	 */
-	BLI_utf8_invalid_strip(fn, strlen(fn));
+	 reported: http://bugs.python.org/msg115202  */
+	strcpy(fn, text->id.name+2);
+#endif
 }
 
-PyObject *bpy_text_import( Text *text )
+PyObject *bpy_text_import(Text *text)
 {
 	char *buf = NULL;
 	char modulename[24];

Modified: trunk/blender/source/blender/python/generic/bpy_internal_import.h
===================================================================
--- trunk/blender/source/blender/python/generic/bpy_internal_import.h	2010-10-27 02:22:55 UTC (rev 32727)
+++ trunk/blender/source/blender/python/generic/bpy_internal_import.h	2010-10-27 06:05:22 UTC (rev 32728)
@@ -28,8 +28,8 @@
 
 /* Note, the BGE needs to use this too, keep it minimal */
 
-#ifndef EXPP_bpy_import_h
-#define EXPP_bpy_import_h
+#ifndef BPY_INTERNAL_IMPORT_H
+#define BPY_INTERNAL_IMPORT_H
 
 /* python redefines :/ */
 #ifdef _POSIX_C_SOURCE
@@ -40,16 +40,12 @@
 #undef _XOPEN_SOURCE
 #endif
 
-#include <Python.h>
-#include "compile.h"		/* for the PyCodeObject */
-#include "eval.h"		/* for PyEval_EvalCode */
-
 struct Text;
 
-PyObject*	bpy_text_import( struct Text *text );
-PyObject*	bpy_text_import_name( char *name, int *found );
-PyObject*	bpy_text_reimport( PyObject *module, int *found );
-/* void		bpy_text_clear_modules( int clear_all );*/ /* Clear user modules */ 
+PyObject*	bpy_text_import(struct Text *text);
+PyObject*	bpy_text_import_name(char *name, int *found);
+PyObject*	bpy_text_reimport(PyObject *module, int *found);
+/* void		bpy_text_clear_modules(int clear_all);*/ /* Clear user modules */ 
 
 void bpy_text_filename_get(char *fn, struct Text *text);
 
@@ -60,4 +56,4 @@
 struct Main *bpy_import_main_get(void);
 void bpy_import_main_set(struct Main *maggie);
 
-#endif				/* EXPP_bpy_import_h */
+#endif				/* BPY_INTERNAL_IMPORT_H */

Modified: trunk/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_interface.c	2010-10-27 02:22:55 UTC (rev 32727)
+++ trunk/blender/source/blender/python/intern/bpy_interface.c	2010-10-27 06:05:22 UTC (rev 32728)
@@ -23,13 +23,12 @@
  * ***** END GPL LICENSE BLOCK *****
  */
  
-
-
 /* grr, python redefines */
 #ifdef _POSIX_C_SOURCE
 #undef _POSIX_C_SOURCE
 #endif
 
+#include <Python.h>
 
 #include "bpy.h"
 #include "bpy_rna.h"

Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2010-10-27 02:22:55 UTC (rev 32727)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2010-10-27 06:05:22 UTC (rev 32728)
@@ -36,6 +36,16 @@
 
 #ifndef DISABLE_PYTHON
 
+#ifdef _POSIX_C_SOURCE
+#undef _POSIX_C_SOURCE
+#endif
+
+#ifdef _XOPEN_SOURCE
+#undef _XOPEN_SOURCE
+#endif
+
+#include <Python.h>
+
 extern "C" {
 	#include "bpy_internal_import.h"  /* from the blender python api, but we want to import text too! */
 	#include "py_capi_utils.h"





More information about the Bf-blender-cvs mailing list