]> granicus.if.org Git - jq/commitdiff
Fix some confusion between "null" and "invalid".
authorStephen Dolan <mu@netsoc.tcd.ie>
Mon, 3 Sep 2012 16:26:52 +0000 (17:26 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Mon, 3 Sep 2012 16:26:52 +0000 (17:26 +0100)
c/execute.c
c/frame_layout.h
c/jv.c
c/jv_parse.c
c/main.c

index d98872b306efbd3e0be4c93962f310d31e04f444..b7818d12f57c64bf019ef2d81a7d1396adec5795 100644 (file)
@@ -22,7 +22,6 @@ typedef struct {
 jv* pathbuf;
 int pathsize; // number of allocated elements
 
-// FIXME mem
 int path_push(stackval sv, jv val) {
   int pos = sv.pathidx;
   assert(pos <= pathsize);
@@ -32,7 +31,7 @@ int path_push(stackval sv, jv val) {
     pathsize = oldpathsize ? oldpathsize * 2 : 100;
     pathbuf = realloc(pathbuf, sizeof(pathbuf[0]) * pathsize);
     for (int i=oldpathsize; i<pathsize; i++) {
-      pathbuf[i] = jv_null();
+      pathbuf[i] = jv_invalid();
     }
   }
   jv_free(pathbuf[pos]);
@@ -179,7 +178,7 @@ jv jq_next() {
 
     case LOADK: {
       jv v = jv_array_get(jv_copy(frame_current_bytecode(&frame_stk)->constants), *pc++);
-      //FIXME assert(v);
+      assert(jv_is_valid(v));
       stack_push(stackval_replace(stack_pop(), v));
       break;
     }
index d2218e929c73272a913705703277acda91998b3a..f098272ec0148d5ba4b2af621b7f27921be38b3d 100644 (file)
@@ -88,7 +88,7 @@ static frame_ptr frame_push(struct forkable_stack* stk, struct closure cl, uint1
   cc->retaddr = retaddr;
   cc->is_backtrack_frame = 0;
   for (int i=0; i<cl.bc->nlocals; i++) {
-    *frame_local_var(fp, i) = jv_null();
+    *frame_local_var(fp, i) = jv_invalid();
   }
   return fp;
 }
diff --git a/c/jv.c b/c/jv.c
index 80b9b9b88aae2968eef2c3b0a65f1e4e157dd2fb..c4a5af1cbd0c6801c29346922ef062697d75a4fc 100644 (file)
--- a/c/jv.c
+++ b/c/jv.c
@@ -619,7 +619,7 @@ static jv* jvp_object_write(jv_complex* object, jvp_string* key) {
     jvp_string_free_p(key);
   } else {
     slot = jvp_object_add_slot(object, key, bucket);
-    slot->value = jv_null();
+    slot->value = jv_invalid();
   }
   if (slot == 0) {
     jvp_object_rehash(object);
@@ -627,7 +627,7 @@ static jv* jvp_object_write(jv_complex* object, jvp_string* key) {
     assert(!jvp_object_find_slot(object, key, bucket));
     slot = jvp_object_add_slot(object, key, bucket);
     assert(slot);
-    slot->value = jv_null();
+    slot->value = jv_invalid();
   }
   return &slot->value;
 }
index ccff509de4fb0a6a88c87ead6dbab97f6d7339db..987bb9e2423b0e1f2187f68bc5b0910f9757f9f3 100644 (file)
@@ -18,7 +18,7 @@ void jv_parser_init(struct jv_parser* p) {
   p->stack = 0;
   p->stacklen = p->stackpos = 0;
   p->hasnext = 0;
-  p->next = jv_null(); //FIXME: jv_invalid
+  p->next = jv_invalid(); //FIXME: jv_invalid
   p->tokenbuf = 0;
   p->tokenlen = p->tokenpos = 0;
   p->st = JV_PARSER_NORMAL;
@@ -357,13 +357,13 @@ jv jv_parse_sized(const char* string, int length) {
     presult msg = scan(&parser, ch);
     if (msg){
       printf("ERROR: %s (parsing '%s')\n", msg, string);
-      return jv_null();
+      return jv_invalid();
     }
   }
   presult msg = finish(&parser);
   if (msg) {
     printf("ERROR: %s (parsing '%s')\n", msg, string);
-    return jv_null();
+    return jv_invalid();
   }
   jv value = jv_copy(parser.next);
   jv_parser_free(&parser);
index 5879d031a07f7ed7d0d7a5f3e5d6340d84aae2f9..bad85418c0ab42ba9b03afb349107741f730a64a 100644 (file)
--- a/c/main.c
+++ b/c/main.c
@@ -40,11 +40,13 @@ void run_tests() {
     printf("\n");
     fgets(buf, sizeof(buf), testdata);
     jv input = jv_parse(buf);
+    assert(jv_is_valid(input));
     jq_init(bc, input);
 
     while (fgets(buf, sizeof(buf), testdata)) {
       if (skipline(buf)) break;
       jv expected = jv_parse(buf);
+      assert(jv_is_valid(expected));
       jv actual = jq_next();
       if (!jv_is_valid(actual)) {
         printf("Insufficient results\n");