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

Reply via email to