Drop support for python 3.1.

for building py3.2 on *nix see:
  http://wiki.blender.org/index.php?title=Dev:2.5/Doc/Building_Blender/Linux/Troubleshooting#Python

also fixed possible buffer overrun with getting the fake filepath for a blender textblock.
This commit is contained in:
2011-03-07 11:53:40 +00:00
parent daff7a447e
commit cfd9d6d190
8 changed files with 12 additions and 36 deletions

View File

@@ -74,16 +74,9 @@ void bpy_import_main_set(struct Main *maggie)
}
/* 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)
void bpy_text_filename_get(char *fn, size_t fn_len, Text *text)
{
#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 */
strcpy(fn, text->id.name+2);
#endif
BLI_snprintf(fn, fn_len, "%s%c%s", text->id.lib ? text->id.lib->filepath : G.main->name, SEP, text->id.name+2);
}
PyObject *bpy_text_import(Text *text)
@@ -94,7 +87,7 @@ PyObject *bpy_text_import(Text *text)
if( !text->compiled ) {
char fn_dummy[256];
bpy_text_filename_get(fn_dummy, text);
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
buf = txt_to_buf( text );
text->compiled = Py_CompileString( buf, fn_dummy, Py_file_input );

View File

@@ -52,7 +52,7 @@ 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);
void bpy_text_filename_get(char *fn, size_t fn_len, struct Text *text);
extern PyMethodDef bpy_import_meth;
extern PyMethodDef bpy_reload_meth;

View File

@@ -60,18 +60,6 @@ void PyC_LineSpit(void) {
fprintf(stderr, "%s:%d\n", filename, lineno);
}
/* python 3.2 only, copied from frameobjec.c */
#if PY_VERSION_HEX < 0x03020000
int
PyFrame_GetLineNumber(PyFrameObject *f)
{
if (f->f_trace)
return f->f_lineno;
else
return PyCode_Addr2Line(f->f_code, f->f_lasti);
}
#endif
void PyC_FileAndNum(const char **filename, int *lineno)
{
PyFrameObject *frame;

View File

@@ -378,7 +378,7 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
if (text) {
char fn_dummy[FILE_MAXDIR];
bpy_text_filename_get(fn_dummy, text);
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
if( !text->compiled ) { /* if it wasn't already compiled, do it now */
char *buf = txt_to_buf( text );

View File

@@ -30,7 +30,7 @@
#ifndef BPY_UTIL_H
#define BPY_UTIL_H
#if PY_VERSION_HEX < 0x03010000
#if PY_VERSION_HEX < 0x03020000
#error "Python versions below 3.1 are not supported anymore, you'll need to update your python."
#endif