Hi, this is my first email to this list, I'm currently porting python to some platforms with limited capabilities and so I thought it would be a good idea to subscribe here. While doing the porting, I found two small problems in Python 2.5.1:
If Py_USING_UNICODE is disabled, in Python/ast.c decode_unicode() still calls unicode-related functions, which leads to undefined references when linking. If HAVE_DYNAMIC_LOADING is disabled, in Python/import.c _PyImport_DynLoadFiletab is still initialized, which also leads to undefined references when linking, since then no source file which defines this variable is used. A patch against 2.5.1 is attached. Best regards Alex
diff -rbup Python-2.5.1-orig/Python/ast.c Python-2.5.1/Python/ast.c --- Python-2.5.1-orig/Python/ast.c 2007-03-16 00:12:48.000000000 -0400 +++ Python-2.5.1/Python/ast.c 2007-07-10 17:06:00.000000000 -0400 @@ -3113,6 +3113,10 @@ decode_utf8(const char **sPtr, const cha static PyObject * decode_unicode(const char *s, size_t len, int rawmode, const char *encoding) { +#ifndef Py_USING_UNICODE + Py_FatalError("decode_unicode should not be called in this build."); + return NULL; +#else PyObject *v, *u; char *buf; char *p; @@ -3170,6 +3174,7 @@ decode_unicode(const char *s, size_t len v = PyUnicode_DecodeUnicodeEscape(s, len, NULL); Py_XDECREF(u); return v; +#endif } /* s is a Python string literal, including the bracketing quote characters, diff -rbup Python-2.5.1-orig/Python/import.c Python-2.5.1/Python/import.c --- Python-2.5.1-orig/Python/import.c 2007-03-13 19:04:29.000000000 -0400 +++ Python-2.5.1/Python/import.c 2007-07-10 17:02:25.000000000 -0400 @@ -117,15 +117,20 @@ _PyImport_Init(void) /* prepare _PyImport_Filetab: copy entries from _PyImport_DynLoadFiletab and _PyImport_StandardFiletab. */ +#ifdef HAVE_DYNAMIC_LOADING for (scan = _PyImport_DynLoadFiletab; scan->suffix != NULL; ++scan) ++countD; +#endif + for (scan = _PyImport_StandardFiletab; scan->suffix != NULL; ++scan) ++countS; filetab = PyMem_NEW(struct filedescr, countD + countS + 1); if (filetab == NULL) Py_FatalError("Can't initialize import file table."); +#ifdef HAVE_DYNAMIC_LOADING memcpy(filetab, _PyImport_DynLoadFiletab, countD * sizeof(struct filedescr)); +#endif memcpy(filetab + countD, _PyImport_StandardFiletab, countS * sizeof(struct filedescr)); filetab[countD + countS].suffix = NULL;
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com