[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