diff options
author | Naoki INADA <inada-n@eagle> | 2009-06-24 01:13:39 +0900 |
---|---|---|
committer | Naoki INADA <inada-n@eagle> | 2009-06-24 01:13:39 +0900 |
commit | f2d07e5d6906567ce06d87dd21085828b3ebc1cc (patch) | |
tree | 78b99b8554a9e3d1e2f920eada2444b9367be8c1 /msgpack/unpack.h | |
parent | df2acc856915cffbf932376c92fd6bdc58110a5b (diff) | |
download | msgpack-python-f2d07e5d6906567ce06d87dd21085828b3ebc1cc.tar.gz |
Remove unneccessary value.
Diffstat (limited to 'msgpack/unpack.h')
-rw-r--r-- | msgpack/unpack.h | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/msgpack/unpack.h b/msgpack/unpack.h index b753493..12702d8 100644 --- a/msgpack/unpack.h +++ b/msgpack/unpack.h @@ -25,14 +25,8 @@ using namespace std; -struct array_context { - unsigned int size; - unsigned int last; - array_context(unsigned int size) : size(size), last(0) - {} -}; struct unpack_user { - stack<array_context> array_stack; + stack<unsigned int> array_stack; map<string, PyObject*> str_cache; ~unpack_user() { @@ -116,7 +110,7 @@ static inline int template_callback_false(unpack_user* u, msgpack_unpack_object* static inline int template_callback_array(unpack_user* u, unsigned int n, msgpack_unpack_object* o) { if (n > 0) { - u->array_stack.push(array_context(n)); + u->array_stack.push(0); *o = PyList_New(n); } else { @@ -127,12 +121,12 @@ static inline int template_callback_array(unpack_user* u, unsigned int n, msgpac static inline int template_callback_array_item(unpack_user* u, msgpack_unpack_object* c, msgpack_unpack_object o) { - unsigned int n = u->array_stack.top().size; - unsigned int &last = u->array_stack.top().last; - - PyList_SetItem(*c, last, o); + unsigned int &last = u->array_stack.top(); + PyList_SET_ITEM(*c, last, o); last++; - if (last >= n) { + + Py_ssize_t len = PyList_GET_SIZE(*c); + if (last >= len) { u->array_stack.pop(); } return 0; |