Code

Currently curl_json will barely ignore boolean values in a non erroneous
authorWilfried Goesgens <willi@arangodb.com>
Sat, 7 Oct 2017 19:14:46 +0000 (21:14 +0200)
committerWilfried Goesgens <willi@arangodb.com>
Sat, 7 Oct 2017 19:14:46 +0000 (21:14 +0200)
way, so that if you have an array like this:
you will be able to access the 123 number like

We now rather call our number parser with 0 for false, 1 for true.

src/curl_json.c

index 756f24f3557dc4dbd2e22c730289fca2f44dff04..07d575e54af1c3fe49a20fc92db9a95c7df172ac 100644 (file)
@@ -226,11 +226,6 @@ static void cj_advance_array(cj_t *db) {
 #define CJ_CB_ABORT 0
 #define CJ_CB_CONTINUE 1
 
-static int cj_cb_boolean(void *ctx, int boolVal) {
-  cj_advance_array(ctx);
-  return CJ_CB_CONTINUE;
-}
-
 static int cj_cb_null(void *ctx) {
   cj_advance_array(ctx);
   return CJ_CB_CONTINUE;
@@ -292,6 +287,14 @@ static int cj_cb_string(void *ctx, const unsigned char *val, yajl_len_t len) {
   return cj_cb_number(ctx, (const char *)val, len);
 } /* int cj_cb_string */
 
+static int cj_cb_boolean(void *ctx, int boolVal) {
+  if (boolVal) {
+   return (cj_cb_number (ctx, "1", 1));
+  } else {
+   return (cj_cb_number (ctx, "0", 1));
+ }
+} /* int cj_cb_boolean */
+
 static int cj_cb_end(void *ctx) {
   cj_t *db = (cj_t *)ctx;
   memset(&db->state[db->depth], 0, sizeof(db->state[db->depth]));