#14897: Enhance error messages of struct.pack and struct.pack_into

Patch by Matti Mäki.
This commit is contained in:
Petri Lehtinen 2012-10-29 21:26:56 +02:00
commit f1380557e3
3 changed files with 18 additions and 4 deletions

View file

@ -820,6 +820,7 @@ Michael Muller
Neil Muller Neil Muller
Louis Munro Louis Munro
R. David Murray R. David Murray
Matti Mäki
Dale Nagata Dale Nagata
John Nagle John Nagle
Takahiro Nakayama Takahiro Nakayama

View file

@ -62,6 +62,9 @@ Core and Builtins
Library Library
------- -------
- Issue #14897: Enhance error messages of struct.pack and
struct.pack_into. Patch by Matti Mäki.
- Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions. - Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions.
Patch by Serhiy Storchaka. Patch by Serhiy Storchaka.

View file

@ -1661,7 +1661,7 @@ s_pack(PyObject *self, PyObject *args)
if (PyTuple_GET_SIZE(args) != soself->s_len) if (PyTuple_GET_SIZE(args) != soself->s_len)
{ {
PyErr_Format(StructError, PyErr_Format(StructError,
"pack requires exactly %zd arguments", soself->s_len); "pack expected %zd items for packing (got %zd)", soself->s_len, PyTuple_GET_SIZE(args));
return NULL; return NULL;
} }
@ -1700,9 +1700,19 @@ s_pack_into(PyObject *self, PyObject *args)
assert(soself->s_codes != NULL); assert(soself->s_codes != NULL);
if (PyTuple_GET_SIZE(args) != (soself->s_len + 2)) if (PyTuple_GET_SIZE(args) != (soself->s_len + 2))
{ {
PyErr_Format(StructError, if (PyTuple_GET_SIZE(args) == 0) {
"pack_into requires exactly %zd arguments", PyErr_Format(StructError,
(soself->s_len + 2)); "pack_into expected buffer argument");
}
else if (PyTuple_GET_SIZE(args) == 1) {
PyErr_Format(StructError,
"pack_into expected offset argument");
}
else {
PyErr_Format(StructError,
"pack_into expected %zd items for packing (got %zd)",
soself->s_len, (PyTuple_GET_SIZE(args) - 2));
}
return NULL; return NULL;
} }