"Guido van Rossum" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> On 7/18/07, Joe Smith <[EMAIL PROTECTED]> wrote:
>> >> I'm wondering if the recusion limit on my build is getting set too low
>> >> somehow.
>> >
>> > Can you find out what it is? sys.getrecursionlimit().
>>
>> Hmm... It is a limit of 1000.
>> That is probably large enough, no?
>
> Yes, that's what it is for me.
>
>> Anyway, from some basic testing it looks like marshal is always throwing
>> that error when marshal.load() is called.
>> However, marshal.loads() works fine.
>>
>> Might this be another encoding related error?
>
> Perhaps. Or something else. Do try to investigate.
>
What I have found is that (on CYGWIN) all of marshal seems to work fine
except for marshal.load().
marshal.dump()'s output can be read by 2.5's marshal.load() without problem.
3k's marshal.load() will not
load the data from 3k's marshal.dump or 2.5's marshal.dump()
It turns out to be a fault due to an uninitialized value on a RFILE.
Specifically, the following patch (part of marshal_load in marshal.c fixes
things.
-----BEGIN PATCH-----
Index: Python/marshal.c
===================================================================
--- Python/marshal.c (revision 56620)
+++ Python/marshal.c (working copy)
@@ -1181,6 +1181,7 @@
return NULL;
}
rf.strings = PyList_New(0);
+ rf.depth=0;
result = read_object(&rf);
Py_DECREF(rf.strings);
Py_DECREF(data);
-----END PATCH-----
I'll submit the patch to sourceforge if needed, although the fact that all
the other loading methods
do set rf.depth=0 (including PyMarshal_ReadObjectFromFile) indicates to me
that this is definately the correct patch.
Looks like that line was accidentally forgoten.
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com