summaryrefslogtreecommitdiffstats
path: root/Python/marshal.c
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2009-03-15 03:24:46 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2009-03-15 03:24:46 (GMT)
commit8eba5ed0d9e1b62b7b1276fcf7b323e39aacd9d5 (patch)
tree6b3a81a5884191e3f3119493e667bfe154025021 /Python/marshal.c
parent2ace4cf813a13f1be8466d48f280ffd0bbe0f5a4 (diff)
downloadcpython-8eba5ed0d9e1b62b7b1276fcf7b323e39aacd9d5.zip
cpython-8eba5ed0d9e1b62b7b1276fcf7b323e39aacd9d5.tar.gz
cpython-8eba5ed0d9e1b62b7b1276fcf7b323e39aacd9d5.tar.bz2
Make marshalling errors a little more informative as to what went wrong
Diffstat (limited to 'Python/marshal.c')
-rw-r--r--Python/marshal.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/Python/marshal.c b/Python/marshal.c
index 140192f..3460bc3 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -576,7 +576,7 @@ r_object(RFILE *p)
n = r_long(p);
if (n < -INT_MAX || n > INT_MAX) {
PyErr_SetString(PyExc_ValueError,
- "bad marshal data");
+ "bad marshal data (long size out of range)");
retval = NULL;
break;
}
@@ -592,7 +592,7 @@ r_object(RFILE *p)
if (digit < 0) {
Py_DECREF(ob);
PyErr_SetString(PyExc_ValueError,
- "bad marshal data");
+ "bad marshal data (negative digit in long)");
ob = NULL;
break;
}
@@ -709,7 +709,7 @@ r_object(RFILE *p)
case TYPE_STRING:
n = r_long(p);
if (n < 0 || n > INT_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
retval = NULL;
break;
}
@@ -738,7 +738,7 @@ r_object(RFILE *p)
case TYPE_STRINGREF:
n = r_long(p);
if (n < 0 || n >= PyList_GET_SIZE(p->strings)) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (string ref out of range)");
retval = NULL;
break;
}
@@ -754,7 +754,7 @@ r_object(RFILE *p)
n = r_long(p);
if (n < 0 || n > INT_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
retval = NULL;
break;
}
@@ -780,7 +780,7 @@ r_object(RFILE *p)
case TYPE_TUPLE:
n = r_long(p);
if (n < 0 || n > INT_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (tuple size out of range)");
retval = NULL;
break;
}
@@ -794,7 +794,7 @@ r_object(RFILE *p)
if ( v2 == NULL ) {
if (!PyErr_Occurred())
PyErr_SetString(PyExc_TypeError,
- "NULL object in marshal data");
+ "NULL object in marshal data for tuple");
Py_DECREF(v);
v = NULL;
break;
@@ -807,7 +807,7 @@ r_object(RFILE *p)
case TYPE_LIST:
n = r_long(p);
if (n < 0 || n > INT_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (list size out of range)");
retval = NULL;
break;
}
@@ -821,7 +821,7 @@ r_object(RFILE *p)
if ( v2 == NULL ) {
if (!PyErr_Occurred())
PyErr_SetString(PyExc_TypeError,
- "NULL object in marshal data");
+ "NULL object in marshal data for list");
Py_DECREF(v);
v = NULL;
break;
@@ -859,7 +859,7 @@ r_object(RFILE *p)
case TYPE_FROZENSET:
n = r_long(p);
if (n < 0 || n > INT_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
retval = NULL;
break;
}
@@ -873,7 +873,7 @@ r_object(RFILE *p)
if ( v2 == NULL ) {
if (!PyErr_Occurred())
PyErr_SetString(PyExc_TypeError,
- "NULL object in marshal data");
+ "NULL object in marshal data for set");
Py_DECREF(v);
v = NULL;
break;
@@ -973,7 +973,7 @@ r_object(RFILE *p)
default:
/* Bogus data got written, which isn't ideal.
This will let you keep working and recover. */
- PyErr_SetString(PyExc_ValueError, "bad marshal data");
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
retval = NULL;
break;
@@ -992,7 +992,7 @@ read_object(RFILE *p)
}
v = r_object(p);
if (v == NULL && !PyErr_Occurred())
- PyErr_SetString(PyExc_TypeError, "NULL object in marshal data");
+ PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object");
return v;
}