diff options
| author | INADA Naoki <methane@users.noreply.github.com> | 2015-11-08 12:45:29 +0900 |
|---|---|---|
| committer | INADA Naoki <methane@users.noreply.github.com> | 2015-11-08 12:45:29 +0900 |
| commit | dbe6572ee5619cf8dea4ffce7abbf72f48a270c2 (patch) | |
| tree | fc571cccadcbc5a6e30b2d70f8de24eb9c7aec8f /msgpack/_unpacker.pyx | |
| parent | a329850147e045ca990c1ff870ce191c4efa4d06 (diff) | |
| parent | 35a69ac9c2fbf6b68b970352791f6d98fbd74963 (diff) | |
| download | msgpack-python-dbe6572ee5619cf8dea4ffce7abbf72f48a270c2.tar.gz | |
Merge pull request #155 from methane/fix/152
Decrease refcnt when error happend while unpacking
Diffstat (limited to 'msgpack/_unpacker.pyx')
| -rw-r--r-- | msgpack/_unpacker.pyx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/msgpack/_unpacker.pyx b/msgpack/_unpacker.pyx index 997979c..d359e57 100644 --- a/msgpack/_unpacker.pyx +++ b/msgpack/_unpacker.pyx @@ -47,6 +47,7 @@ cdef extern from "unpack.h": execute_fn read_map_header void unpack_init(unpack_context* ctx) object unpack_data(unpack_context* ctx) + void unpack_clear(unpack_context* ctx) cdef inline init_ctx(unpack_context *ctx, object object_hook, object object_pairs_hook, @@ -141,8 +142,8 @@ def unpackb(object packed, object object_hook=None, object list_hook=None, if off < buf_len: raise ExtraData(obj, PyBytes_FromStringAndSize(buf+off, buf_len-off)) return obj - else: - raise UnpackValueError("Unpack failed: error = %s" % (ret,)) + unpack_clear(&ctx) + raise UnpackValueError("Unpack failed: error = %d" % (ret,)) def unpack(object stream, object object_hook=None, object list_hook=None, |
