diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-22 14:46:54 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-22 14:46:54 +0900 |
| commit | d24193630ee5f3b5fcf5fd00bcaf95106b7a9c6d (patch) | |
| tree | 95af8fca7c931a38fdbaa4c01764fcd3ce5a6927 /cpp | |
| parent | 354af69f6204ba4523cf7ca3e50f2af1ad8d609e (diff) | |
| download | msgpack-python-d24193630ee5f3b5fcf5fd00bcaf95106b7a9c6d.tar.gz | |
reverts variable-length stack: avoids memory leak
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/unpack.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/cpp/unpack.c b/cpp/unpack.c index 98c8653..34016fd 100644 --- a/cpp/unpack.c +++ b/cpp/unpack.c @@ -44,7 +44,6 @@ struct template_context; typedef struct template_context template_context; static void template_init(template_context* ctx); -static void template_destroy(template_context* ctx); static msgpack_object template_data(template_context* ctx); @@ -216,7 +215,6 @@ bool msgpack_unpacker_init(msgpack_unpacker* mpac, size_t initial_buffer_size) void msgpack_unpacker_destroy(msgpack_unpacker* mpac) { msgpack_zone_free(mpac->z); - template_destroy(CTX_CAST(mpac->ctx)); free(mpac->ctx); decl_count(mpac->buffer); } @@ -370,7 +368,6 @@ msgpack_unpack_return msgpack_unpack(const char* data, size_t len, size_t* off, msgpack_zone* z, msgpack_object* result) { - msgpack_unpack_return ret = MSGPACK_UNPACK_SUCCESS; template_context ctx; template_init(&ctx); @@ -382,26 +379,21 @@ msgpack_unpack(const char* data, size_t len, size_t* off, int e = template_execute(&ctx, data, len, &noff); if(e < 0) { - ret = MSGPACK_UNPACK_PARSE_ERROR; - goto out; + return MSGPACK_UNPACK_PARSE_ERROR; } if(off != NULL) { *off = noff; } if(e == 0) { - ret = MSGPACK_UNPACK_CONTINUE; - goto out; + return MSGPACK_UNPACK_CONTINUE; } *result = template_data(&ctx); if(noff < len) { - ret = MSGPACK_UNPACK_EXTRA_BYTES; - goto out; + return MSGPACK_UNPACK_EXTRA_BYTES; } -out: - template_destroy(&ctx); - return ret; + return MSGPACK_UNPACK_SUCCESS; } |
