summaryrefslogtreecommitdiff
path: root/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
commitf2d07e5d6906567ce06d87dd21085828b3ebc1cc (patch)
tree78b99b8554a9e3d1e2f920eada2444b9367be8c1 /msgpack/unpack.h
parentdf2acc856915cffbf932376c92fd6bdc58110a5b (diff)
downloadmsgpack-python-f2d07e5d6906567ce06d87dd21085828b3ebc1cc.tar.gz
Remove unneccessary value.
Diffstat (limited to 'msgpack/unpack.h')
-rw-r--r--msgpack/unpack.h20
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;