diff --git a/modules/database/src/ioc/db/dbConvertJSON.c b/modules/database/src/ioc/db/dbConvertJSON.c index ba7c42691..95f944e2b 100644 --- a/modules/database/src/ioc/db/dbConvertJSON.c +++ b/modules/database/src/ioc/db/dbConvertJSON.c @@ -52,11 +52,6 @@ static int dbcj_integer(void *ctx, long long num) { return 1; } -static int dblsj_integer(void *ctx, long long num) { - errlogPrintf("dbLSConvertJSON: Numeric value %lli provided, string expected\n", num); - return 0; /* Illegal */ -} - static int dbcj_double(void *ctx, double num) { parseContext *parser = (parseContext *) ctx; FASTCONVERT conv = dbFastPutConvertRoutine[DBF_DOUBLE][parser->dbrType]; @@ -69,8 +64,9 @@ static int dbcj_double(void *ctx, double num) { return 1; } -static int dblsj_double(void *ctx, double num) { - errlogPrintf("dbLSConvertJSON: Numeric value %g provided, string expected\n", num); +static int dblsj_number(void *ctx, const char *val, size_t len) { + errlogPrintf("dbLSConvertJSON: Numeric value %.*s provided, string expected\n", + (int)len, val); return 0; /* Illegal */ } @@ -102,11 +98,6 @@ static int dblsj_string(void *ctx, const unsigned char *val, size_t len) { parseContext *parser = (parseContext *) ctx; char *pdest = parser->pdest; - if (parser->dbrType != DBF_STRING) { - errlogPrintf("dbConvertJSON: dblsj_string dbrType " ERL_ERROR "\n"); - return 0; /* Illegal */ - } - if (parser->elems > 0) { if (len > parser->dbrSize - 1) len = parser->dbrSize - 1; @@ -123,14 +114,6 @@ static int dbcj_start_map(void *ctx) { return 0; /* Illegal */ } -static int dbcj_map_key(void *ctx, const unsigned char *key, size_t len) { - return 0; /* Illegal */ -} - -static int dbcj_end_map(void *ctx) { - return 0; /* Illegal */ -} - static int dbcj_start_array(void *ctx) { parseContext *parser = (parseContext *) ctx; @@ -140,25 +123,16 @@ static int dbcj_start_array(void *ctx) { return (parser->depth == 1); } -static int dbcj_end_array(void *ctx) { - parseContext *parser = (parseContext *) ctx; - - parser->depth--; - return (parser->depth == 0); -} - - static yajl_callbacks dbcj_callbacks = { dbcj_null, dbcj_boolean, dbcj_integer, dbcj_double, NULL, dbcj_string, - dbcj_start_map, dbcj_map_key, dbcj_end_map, - dbcj_start_array, dbcj_end_array + dbcj_start_map, NULL, NULL, + dbcj_start_array, NULL }; long dbPutConvertJSON(const char *json, short dbrType, void *pdest, long *pnRequest) { parseContext context, *parser = &context; - yajl_alloc_funcs dbcj_alloc; yajl_handle yh; yajl_status ys; size_t jlen = strlen(json); @@ -180,8 +154,7 @@ long dbPutConvertJSON(const char *json, short dbrType, parser->pdest = pdest; parser->elems = *pnRequest; - yajl_set_default_alloc_funcs(&dbcj_alloc); - yh = yajl_alloc(&dbcj_callbacks, &dbcj_alloc, parser); + yh = yajl_alloc(&dbcj_callbacks, NULL, parser); if (!yh) { errlogPrintf("dbConvertJSON: out of memory\n"); return S_db_noMemory; @@ -212,16 +185,15 @@ long dbPutConvertJSON(const char *json, short dbrType, static yajl_callbacks dblsj_callbacks = { - dbcj_null, dbcj_boolean, dblsj_integer, dblsj_double, NULL, dblsj_string, - dbcj_start_map, dbcj_map_key, dbcj_end_map, - dbcj_start_array, dbcj_end_array + dbcj_null, dbcj_boolean, NULL, NULL, dblsj_number, dblsj_string, + dbcj_start_map, NULL, NULL, + dbcj_start_array, NULL }; long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size, epicsUInt32 *plen) { parseContext context, *parser = &context; - yajl_alloc_funcs dbcj_alloc; yajl_handle yh; yajl_status ys; size_t jlen = strlen(json); @@ -238,8 +210,7 @@ long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size, parser->pdest = pdest; parser->elems = 1; - yajl_set_default_alloc_funcs(&dbcj_alloc); - yh = yajl_alloc(&dblsj_callbacks, &dbcj_alloc, parser); + yh = yajl_alloc(&dblsj_callbacks, NULL, parser); if (!yh) { errlogPrintf("dbLSConvertJSON: out of memory\n"); return S_db_noMemory;