diff --git a/src/lua/pickle.c b/src/lua/pickle.c index e47ac11b4f4160a19fa2e4085e195fadf67ccb05..65208b5b3ab2480920b0350a5f72ca83cd1a0dcd 100644 --- a/src/lua/pickle.c +++ b/src/lua/pickle.c @@ -109,14 +109,14 @@ lbox_pack(struct lua_State *L) case 'I': case 'i': /* signed and unsigned 32-bit integers */ - if (field.type != MP_UINT && field.ival != MP_INT) + if (field.type != MP_UINT && field.type != MP_INT) luaL_error(L, "pickle.pack: expected 32-bit int"); luaL_region_dup(L, buf, &field.ival, sizeof(uint32_t)); break; case 'N': /* signed and unsigned 32-bit big endian integers */ - if (field.type != MP_UINT && field.ival != MP_INT) + if (field.type != MP_UINT && field.type != MP_INT) luaL_error(L, "pickle.pack: expected 32-bit int"); field.ival = htonl(field.ival); diff --git a/test/app/pack.result b/test/app/pack.result index 8c1333abbbcebb8bb30ddfb4d78572faa18bd343..52f4be3cd3e9a61bf67fdc20644195e81b9ec648 100644 --- a/test/app/pack.result +++ b/test/app/pack.result @@ -26,6 +26,14 @@ pickle.pack('s', 0x4d) --- - "M\0" ... +pickle.pack('i', -1) +--- +- !!binary /////w== +... +pickle.pack('N', -1) +--- +- !!binary /////w== +... pickle.pack('ssss', 25940, 29811, 28448, 11883) --- - Test ok. diff --git a/test/app/pack.test.lua b/test/app/pack.test.lua index 8f7a6a0f45cf89c5e556a95a1306e28eb859ee7d..6ddd81cd48538b5e47d2b640a199a91c51fb4b25 100644 --- a/test/app/pack.test.lua +++ b/test/app/pack.test.lua @@ -7,6 +7,8 @@ pickle.pack('abc') pickle.pack('a', ' - hello') pickle.pack('Aa', ' - hello', ' world') pickle.pack('s', 0x4d) +pickle.pack('i', -1) +pickle.pack('N', -1) pickle.pack('ssss', 25940, 29811, 28448, 11883) pickle.pack('SSSS', 25940, 29811, 28448, 11883) pickle.pack('SSSSSSSS', 28493, 29550, 27680, 27497, 29541, 20512, 29285, 8556)