diff options
author | Armin Rigo <arigo@tunes.org> | 2004-12-20 12:25:57 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2004-12-20 12:25:57 (GMT) |
commit | 2ccea1785603ad35a05f75f40e9dc7fc82caa346 (patch) | |
tree | d20a28547d53beb536dd97b5a11d238945d42c18 | |
parent | f964154b8cb74a05a3664cd34e938c0298f97680 (diff) | |
download | cpython-2ccea1785603ad35a05f75f40e9dc7fc82caa346.zip cpython-2ccea1785603ad35a05f75f40e9dc7fc82caa346.tar.gz cpython-2ccea1785603ad35a05f75f40e9dc7fc82caa346.tar.bz2 |
Any call to marshal.dumps() with the new optional argument 'version' just
immediately segfaults, due to a typo! This was obviously never tested...
Added a test for it, and also fixed the documentation.
-rw-r--r-- | Doc/lib/libmarshal.tex | 6 | ||||
-rw-r--r-- | Lib/test/test_marshal.py | 5 | ||||
-rw-r--r-- | Python/marshal.c | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/Doc/lib/libmarshal.tex b/Doc/lib/libmarshal.tex index 53ca668..d3dd835 100644 --- a/Doc/lib/libmarshal.tex +++ b/Doc/lib/libmarshal.tex @@ -62,7 +62,7 @@ operating on strings. The module defines these functions: -\begin{funcdesc}{dump}{value, file} +\begin{funcdesc}{dump}{value, file\optional{, version}} Write the value on the open file. The value must be a supported type. The file must be an open file object such as \code{sys.stdout} or returned by \function{open()} or @@ -75,7 +75,7 @@ The module defines these functions: read back by \function{load()}. \versionadded[The \var{version} argument indicates the data - format that \code{dumps} should use.]{2.4} + format that \code{dump} should use (see below)]{2.4} \end{funcdesc} \begin{funcdesc}{load}{file} @@ -96,7 +96,7 @@ The module defines these functions: contains an object that has) an unsupported type. \versionadded[The \var{version} argument indicates the data - format that \code{dumps} should use.]{2.4} + format that \code{dumps} should use (see below)]{2.4} \end{funcdesc} \begin{funcdesc}{loads}{string} diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index eb07521..5c1a3f3 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -180,6 +180,11 @@ class BugsTestCase(unittest.TestCase): self.assertRaises(Exception, marshal.loads, 'f') self.assertRaises(Exception, marshal.loads, marshal.dumps(5L)[:-1]) + def test_version_argument(self): + # Python 2.4.0 crashes for any call to marshal.dumps(x, y) + self.assertEquals(marshal.loads(marshal.dumps(5, 0)), 5) + self.assertEquals(marshal.loads(marshal.dumps(5, 1)), 5) + def test_main(): test_support.run_unittest(IntTestCase, FloatTestCase, diff --git a/Python/marshal.c b/Python/marshal.c index 590e1ca..0ab0597 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -893,7 +893,7 @@ marshal_dumps(PyObject *self, PyObject *args) { PyObject *x; int version = Py_MARSHAL_VERSION; - if (!PyArg_ParseTuple(args, "O|i:dumps", &x, version)) + if (!PyArg_ParseTuple(args, "O|i:dumps", &x, &version)) return NULL; return PyMarshal_WriteObjectToString(x, version); } |