under develop

This commit is contained in:
funshine 2015-03-16 17:09:43 +08:00
parent 83f53c23c1
commit d425dd7127
3 changed files with 27 additions and 9 deletions

View File

@ -30,7 +30,7 @@
#include "c_stdio.h" #include "c_stdio.h"
#include "c_stdlib.h" #include "c_stdlib.h"
#include <assert.h> // #include <assert.h>
#include "c_string.h" #include "c_string.h"
#include "fpconv.h" #include "fpconv.h"

View File

@ -25,7 +25,7 @@
#define c_strncmp os_strncmp #define c_strncmp os_strncmp
#define c_strncpy os_strncpy #define c_strncpy os_strncpy
// #define c_strstr os_strstr // #define c_strstr os_strstr
#define c_strncasecmp c_strcmp #define c_strncasecmp strncasecmp
#define c_strstr strstr #define c_strstr strstr
#define c_strncat strncat #define c_strncat strncat

View File

@ -36,7 +36,7 @@
* difficult to know object/array sizes ahead of time. * difficult to know object/array sizes ahead of time.
*/ */
#include <assert.h> // #include <assert.h>
#include "c_string.h" #include "c_string.h"
#include "c_math.h" #include "c_math.h"
#include "c_limits.h" #include "c_limits.h"
@ -44,7 +44,14 @@
#include "lauxlib.h" #include "lauxlib.h"
#include "strbuf.h" #include "strbuf.h"
#ifdef LUA_NUMBER_INTEGRAL
#include "fpconv.h" #include "fpconv.h"
#else
#define FPCONV_G_FMT_BUFSIZE 32
#define fpconv_strtod c_strtod
#define fpconv_init() ((void)0)
#define fpconv_g_fmt fpconv_g_fmt
#endif
#ifndef CJSON_MODNAME #ifndef CJSON_MODNAME
#define CJSON_MODNAME "cjson" #define CJSON_MODNAME "cjson"
@ -964,7 +971,7 @@ static void json_next_string_token(json_parse_t *json, json_token_t *token)
char ch; char ch;
/* Caller must ensure a string is next */ /* Caller must ensure a string is next */
assert(*json->ptr == '"'); if(!(*json->ptr == '"')) return;
/* Skip " */ /* Skip " */
json->ptr++; json->ptr++;
@ -1058,10 +1065,21 @@ static int json_is_invalid_number(json_parse_t *json)
return 0; /* Ordinary number */ return 0; /* Ordinary number */
} }
char tmp[4]; // conv to lower. because c_strncasecmp == c_strcmp
int i;
for (i = 0; i < 3; ++i)
{
if(p[i]!=0)
tmp[i] = tolower(p[i]);
else
tmp[i] = 0;
}
tmp[3] = 0;
/* Reject inf/nan */ /* Reject inf/nan */
if (!strncasecmp(p, "inf", 3)) if (!c_strncasecmp(tmp, "inf", 3))
return 1; return 1;
if (!strncasecmp(p, "nan", 3)) if (!c_strncasecmp(tmp, "nan", 3))
return 1; return 1;
/* Pass all other numbers which may still be invalid, but /* Pass all other numbers which may still be invalid, but
@ -1137,17 +1155,17 @@ static void json_next_token(json_parse_t *json, json_token_t *token)
} }
json_next_number_token(json, token); json_next_number_token(json, token);
return; return;
} else if (!strncmp(json->ptr, "true", 4)) { } else if (!c_strncmp(json->ptr, "true", 4)) {
token->type = T_BOOLEAN; token->type = T_BOOLEAN;
token->value.boolean = 1; token->value.boolean = 1;
json->ptr += 4; json->ptr += 4;
return; return;
} else if (!strncmp(json->ptr, "false", 5)) { } else if (!c_strncmp(json->ptr, "false", 5)) {
token->type = T_BOOLEAN; token->type = T_BOOLEAN;
token->value.boolean = 0; token->value.boolean = 0;
json->ptr += 5; json->ptr += 5;
return; return;
} else if (!strncmp(json->ptr, "null", 4)) { } else if (!c_strncmp(json->ptr, "null", 4)) {
token->type = T_NULL; token->type = T_NULL;
json->ptr += 4; json->ptr += 4;
return; return;