summaryrefslogtreecommitdiff
path: root/python/msgpack/unpack.h
diff options
context:
space:
mode:
authorNaoki INADA <inada-n@eagle>2009-06-24 01:13:39 +0900
committerNaoki INADA <inada-n@eagle>2009-06-24 01:13:39 +0900
commitdd53b141ef6d2495d0cc14c8949180a74ae3caf6 (patch)
tree01cbb51bef3248f26db310d2a101c812cbaefa12 /python/msgpack/unpack.h
parent99d0a41ec6a6169456dcfe64cd6972520a768b71 (diff)
downloadmsgpack-python-dd53b141ef6d2495d0cc14c8949180a74ae3caf6.tar.gz
Remove unneccessary value.
Diffstat (limited to 'python/msgpack/unpack.h')
-rw-r--r--python/msgpack/unpack.h20
1 files changed, 7 insertions, 13 deletions
diff --git a/python/msgpack/unpack.h b/python/msgpack/unpack.h
index b753493..12702d8 100644
--- a/python/msgpack/unpack.h
+++ b/python/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;