Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-04-30 17:43:01 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-04-30 17:43:01 +0400
commit4d1a109ddec02ad7e527d8b65a5cdc8d4a7528a9 (patch)
tree3bc4cbd7b3234aed61036c951cd6188240b6504b /source/blender/python
parentb96d531bc97ec763e96a5f7a28993d70a0a9e637 (diff)
Fix T35176: Python fails with blend files from non-ASCII paths
Thanks to Tamito for updating the patch to support Freestyle!
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/generic/bpy_internal_import.c9
-rw-r--r--source/blender/python/intern/bpy_interface.c9
2 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c
index a0e6204b34c..2d19fdb87b3 100644
--- a/source/blender/python/generic/bpy_internal_import.c
+++ b/source/blender/python/generic/bpy_internal_import.c
@@ -47,6 +47,8 @@
#include "BKE_text.h" /* txt_to_buf */
#include "BKE_main.h"
+#include "py_capi_utils.h"
+
#include "bpy_internal_import.h" /* own include */
static Main *bpy_import_main = NULL;
@@ -133,6 +135,7 @@ void bpy_text_filename_get(char *fn, size_t fn_len, Text *text)
bool bpy_text_compile(Text *text)
{
char fn_dummy[FILE_MAX];
+ PyObject *fn_dummy_py;
char *buf;
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
@@ -140,10 +143,14 @@ bool bpy_text_compile(Text *text)
/* if previously compiled, free the object */
free_compiled_text(text);
+ fn_dummy_py = PyC_UnicodeFromByte(fn_dummy);
+
buf = txt_to_buf(text);
- text->compiled = Py_CompileString(buf, fn_dummy, Py_file_input);
+ text->compiled = Py_CompileStringObject(buf, fn_dummy_py, Py_file_input, NULL, -1);
MEM_freeN(buf);
+ Py_DECREF(fn_dummy_py);
+
if (PyErr_Occurred()) {
PyErr_Print();
PyErr_Clear();
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index 93bced364d2..99e741c8c94 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -463,12 +463,17 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text,
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
if (text->compiled == NULL) { /* if it wasn't already compiled, do it now */
- char *buf = txt_to_buf(text);
+ char *buf;
+ PyObject *fn_dummy_py;
- text->compiled = Py_CompileString(buf, fn_dummy, Py_file_input);
+ fn_dummy_py = PyC_UnicodeFromByte(fn_dummy);
+ buf = txt_to_buf(text);
+ text->compiled = Py_CompileStringObject(buf, fn_dummy_py, Py_file_input, NULL, -1);
MEM_freeN(buf);
+ Py_DECREF(fn_dummy_py);
+
if (PyErr_Occurred()) {
if (do_jump) {
python_script_error_jump_text(text);