diff options
Diffstat (limited to 'libs/luci-lib-jsonc/src')
-rw-r--r-- | libs/luci-lib-jsonc/src/Makefile | 2 | ||||
-rw-r--r-- | libs/luci-lib-jsonc/src/jsonc.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/libs/luci-lib-jsonc/src/Makefile b/libs/luci-lib-jsonc/src/Makefile index e15fbac382..f79423d1ff 100644 --- a/libs/luci-lib-jsonc/src/Makefile +++ b/libs/luci-lib-jsonc/src/Makefile @@ -7,7 +7,7 @@ JSONC_LIB = jsonc.so $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(JSONC_CFLAGS) $(FPIC) -c -o $@ $< compile: $(JSONC_OBJ) - $(CC) $(LDFLAGS) -shared -o $(JSONC_LIB) $(JSONC_OBJ) $(JSONC_LDFLAGS) + $(CC) $(LDFLAGS) -shared -o $(JSONC_LIB) $(JSONC_OBJ) $(JSONC_LDFLAGS) $(FPIC) install: compile mkdir -p $(DESTDIR)/usr/lib/lua/luci diff --git a/libs/luci-lib-jsonc/src/jsonc.c b/libs/luci-lib-jsonc/src/jsonc.c index 2f56a4a688..5abb738f5f 100644 --- a/libs/luci-lib-jsonc/src/jsonc.c +++ b/libs/luci-lib-jsonc/src/jsonc.c @@ -294,7 +294,7 @@ static bool visited(struct seen **sp, const void *ptr) { static struct json_object * _lua_to_json_rec(lua_State *L, int index, struct seen **seen) { - lua_Number nd, ni; + lua_Number nd; struct json_object *obj; const char *key; int i, max; @@ -364,11 +364,13 @@ static struct json_object * _lua_to_json_rec(lua_State *L, int index, return json_object_new_boolean(lua_toboolean(L, index)); case LUA_TNUMBER: + if (lua_isinteger(L, index)) + return json_object_new_int64(lua_tointeger(L, index)); + nd = lua_tonumber(L, index); - ni = lua_tointeger(L, index); - if (nd == ni) - return json_object_new_int(nd); + if (isfinite(nd) && trunc(nd) == nd) + return json_object_new_int64(nd); return json_object_new_double(nd); |