diff options
Diffstat (limited to 'lua_cjson.c')
-rw-r--r-- | lua_cjson.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/lua_cjson.c b/lua_cjson.c index b14c242..498c686 100644 --- a/lua_cjson.c +++ b/lua_cjson.c | |||
@@ -321,6 +321,18 @@ static int json_cfg_encode_keep_buffer(lua_State *l) | |||
321 | return 1; | 321 | return 1; |
322 | } | 322 | } |
323 | 323 | ||
324 | #if defined(DISABLE_INVALID_NUMBERS) && !defined(USE_INTERNAL_FPCONV) | ||
325 | void json_verify_invalid_number_setting(lua_State *l, int *setting) | ||
326 | { | ||
327 | if (*setting == 1) { | ||
328 | *setting = 0; | ||
329 | luaL_error(l, "Infinity, NaN, and/or hexadecimal numbers are not supported."); | ||
330 | } | ||
331 | } | ||
332 | #else | ||
333 | #define json_verify_invalid_number_setting(l, s) do { } while(0) | ||
334 | #endif | ||
335 | |||
324 | static int json_cfg_encode_invalid_numbers(lua_State *l) | 336 | static int json_cfg_encode_invalid_numbers(lua_State *l) |
325 | { | 337 | { |
326 | static const char *options[] = { "off", "on", "null", NULL }; | 338 | static const char *options[] = { "off", "on", "null", NULL }; |
@@ -328,12 +340,7 @@ static int json_cfg_encode_invalid_numbers(lua_State *l) | |||
328 | 340 | ||
329 | json_enum_option(l, 1, &cfg->encode_invalid_numbers, options, 1); | 341 | json_enum_option(l, 1, &cfg->encode_invalid_numbers, options, 1); |
330 | 342 | ||
331 | #if DISABLE_INVALID_NUMBERS | 343 | json_verify_invalid_number_setting(l, &cfg->encode_invalid_numbers); |
332 | if (cfg->encode_invalid_numbers == 1) { | ||
333 | cfg->encode_invalid_numbers = 0; | ||
334 | luaL_error(l, "Infinity, NaN, and/or hexadecimal numbers are not supported."); | ||
335 | } | ||
336 | #endif | ||
337 | 344 | ||
338 | return 1; | 345 | return 1; |
339 | } | 346 | } |
@@ -344,12 +351,7 @@ static int json_cfg_decode_invalid_numbers(lua_State *l) | |||
344 | 351 | ||
345 | json_enum_option(l, 1, &cfg->decode_invalid_numbers, NULL, 1); | 352 | json_enum_option(l, 1, &cfg->decode_invalid_numbers, NULL, 1); |
346 | 353 | ||
347 | #if DISABLE_INVALID_NUMBERS | 354 | json_verify_invalid_number_setting(l, &cfg->encode_invalid_numbers); |
348 | if (cfg->decode_invalid_numbers) { | ||
349 | cfg->decode_invalid_numbers = 0; | ||
350 | luaL_error(l, "Infinity, NaN, and/or hexadecimal numbers are not supported."); | ||
351 | } | ||
352 | #endif | ||
353 | 355 | ||
354 | return 1; | 356 | return 1; |
355 | } | 357 | } |