]> granicus.if.org Git - jq/commitdiff
Bugfix for expanding objects.
authorStephen Dolan <mu@netsoc.tcd.ie>
Sun, 9 Sep 2012 17:09:05 +0000 (18:09 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Sun, 9 Sep 2012 17:09:05 +0000 (18:09 +0100)
c/jv.c
c/jv.h

diff --git a/c/jv.c b/c/jv.c
index c4a5af1cbd0c6801c29346922ef062697d75a4fc..1d5c98166e63dea32ae178b9568a6a498457929e 100644 (file)
--- a/c/jv.c
+++ b/c/jv.c
@@ -58,6 +58,10 @@ jv jv_null() {
   return JV_NULL;
 }
 
+jv jv_bool(int x) {
+  return x ? JV_TRUE : JV_FALSE;
+}
+
 /*
  * Numbers
  */
@@ -617,11 +621,12 @@ static jv* jvp_object_write(jv_complex* object, jvp_string* key) {
   if (slot) {
     // already has the key
     jvp_string_free_p(key);
-  } else {
-    slot = jvp_object_add_slot(object, key, bucket);
-    slot->value = jv_invalid();
+    return &slot->value;
   }
-  if (slot == 0) {
+  slot = jvp_object_add_slot(object, key, bucket);
+  if (slot) {
+    slot->value = jv_invalid();
+  } else {
     jvp_object_rehash(object);
     bucket = jvp_object_find_bucket(object, key);
     assert(!jvp_object_find_slot(object, key, bucket));
diff --git a/c/jv.h b/c/jv.h
index 8d9ebadb3ca8ef231df196b7b93ef1f882953fc3..6872ec5c7ae3ed0121643d6d21681a9aaa76a716 100644 (file)
--- a/c/jv.h
+++ b/c/jv.h
@@ -52,6 +52,7 @@ jv jv_invalid();
 jv jv_null();
 jv jv_true();
 jv jv_false();
+jv jv_bool(int);
 
 jv jv_number(double);
 double jv_number_value(jv);