Fix T35176: Python fails with blend files from non-ASCII paths

Thanks to Tamito for updating the patch to support Freestyle!
This commit is contained in:
Campbell Barton 2014-04-30 23:43:01 +10:00
parent b96d531bc9
commit 4d1a109dde
Notes: blender-bot 2023-02-14 12:22:20 +01:00
Referenced by issue #35176, Fix for Python failure with .blend files loaded from paths including non-ASCII characters
2 changed files with 15 additions and 3 deletions

View File

@ -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();

View File

@ -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);