summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-06-28 23:24:19 (GMT)
committerGuido van Rossum <guido@python.org>2000-06-28 23:24:19 (GMT)
commit98626cd7ac22f2a77eaa68bc53e2ac27c67d9fa4 (patch)
tree0afa7b7f9c5870ec523299dc1dac70653473210f /Python
parenta04ff0fb53913b1c821dac4278331728dbdbfe51 (diff)
downloadcpython-98626cd7ac22f2a77eaa68bc53e2ac27c67d9fa4.zip
cpython-98626cd7ac22f2a77eaa68bc53e2ac27c67d9fa4.tar.gz
cpython-98626cd7ac22f2a77eaa68bc53e2ac27c67d9fa4.tar.bz2
Urmpf. Quality control on this patch lapsed a bit. :-(
The depth field was never decremented inside w_object(), and it was never initialized in PyMarshal_WriteObjectToFile(). This caused imports from .pyc files to fil mysteriously when the .pyc file was written by the broken code -- w_object() would bail out early, but PyMarshal_WriteObjectToFile() doesn't check the error or return an error code, and apparently the marshalling code doesn't call PyErr_Check() either. (That's a separate patch if I feel like it.)
Diffstat (limited to 'Python')
-rw-r--r--Python/marshal.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/marshal.c b/Python/marshal.c
index a316d18..46b3fa0 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -234,8 +234,9 @@ w_object(v, p)
PyObject *utf8;
utf8 = PyUnicode_AsUTF8String(v);
if (utf8 == NULL) {
- p->error = 1;
- return;
+ p->depth--;
+ p->error = 1;
+ return;
}
w_byte(TYPE_UNICODE, p);
n = PyString_GET_SIZE(utf8);
@@ -303,6 +304,8 @@ w_object(v, p)
w_byte(TYPE_UNKNOWN, p);
p->error = 1;
}
+
+ p->depth--;
}
void
@@ -325,6 +328,7 @@ PyMarshal_WriteObjectToFile(x, fp)
WFILE wf;
wf.fp = fp;
wf.error = 0;
+ wf.depth = 0;
w_object(x, &wf);
}