Alexandre Vassalotti added the comment:

I found a few problems in your patch. In PyCode_New() the type check
for the filename argument is incorrect:

--- Objects/codeobject.c        (revision 58412)
+++ Objects/codeobject.c        (working copy)
@@ -59,7 +59,7 @@
            freevars == NULL || !PyTuple_Check(freevars) ||
            cellvars == NULL || !PyTuple_Check(cellvars) ||
            name == NULL || (!PyString_Check(name) && !PyUnicode_Check(name)) ||
-           filename == NULL || !PyString_Check(filename) ||
+           filename == NULL || (!PyString_Check(name) &&
!PyUnicode_Check(name)) ||
            lnotab == NULL || !PyString_Check(lnotab) ||
            !PyObject_CheckReadBuffer(code)) {
                PyErr_BadInternalCall();

@@ -260,6 +267,8 @@
                ourcellvars = PyTuple_New(0);
        if (ourcellvars == NULL)
                goto cleanup;
+    filename = PyUnicode_DecodeFSDefault(PyString_AS_STRING(filename),
+                                         0, NULL);


The following is unnecessary and will cause a reference leak:


@@ -260,6 +267,8 @@
                ourcellvars = PyTuple_New(0);
        if (ourcellvars == NULL)
                goto cleanup;
+    filename = PyUnicode_DecodeFSDefault(PyString_AS_STRING(filename),
+                                         0, NULL);
 
        co = (PyObject *)PyCode_New(argcount, kwonlyargcount,
                                    nlocals, stacksize, flags,


I think the interface of PyUnicode_DecodeFSDefault() could be improved
a bit. The function doesn't use the last argument 'errors', so why is
there? I am not sure if it is useful to keep second argument,
'length', either. So, I believe the function prototype should be
changed to:

    PyObject *PyUnicode_Decode_FSDefault(const char *s);

Another thing that I am not sure about is whether it is correct to
consider ISO-8859-15 the same thing as Latin-1.

Overall, the patch looks good to me and doesn't cause any test to
fail. I attached an updated patch with the above issues fixed.

Thank you, Christian, for the patch. :)

----------
nosy: +alexandre.vassalotti

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1272>
__________________________________
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to