From 8783cf8ec3abca1675a47940c1f4e162a66a562d Mon Sep 17 00:00:00 2001 From: frsyuki Date: Thu, 29 Apr 2010 22:32:43 +0900 Subject: [PATCH] cpp: fixes unpacker::next --- cpp/msgpack/unpack.hpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/cpp/msgpack/unpack.hpp b/cpp/msgpack/unpack.hpp index dbe7777..56ce0f6 100644 --- a/cpp/msgpack/unpack.hpp +++ b/cpp/msgpack/unpack.hpp @@ -219,15 +219,22 @@ inline void unpacker::buffer_consumed(size_t size) inline bool unpacker::next(unpacked* result) { int ret = msgpack_unpacker_execute(this); + if(ret < 0) { throw unpack_error("parse error"); } - result->zone().reset( release_zone() ); - result->get() = data(); - reset(); + if(ret == 0) { + result->zone().reset(); + result->get() = object(); + return false; - return ret > 0; + } else { + result->zone().reset( release_zone() ); + result->get() = data(); + reset(); + return true; + } }