]> granicus.if.org Git - jq/commitdiff
Make the code compile with warnings-as-errors.
authorStephen Dolan <mu@netsoc.tcd.ie>
Mon, 17 Sep 2012 21:04:32 +0000 (22:04 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Mon, 17 Sep 2012 21:04:58 +0000 (22:04 +0100)
-Wextra found a bona-fide bug: signed/unsigned comparison in a
stack overflow check.

c/Makefile
c/builtin.c
c/execute.c
c/forkable_stack.h
c/gen_utf8_tables.py
c/jv.c

index c80642dc1ae075d0103e719063a6c293e94a2e93..ddd49aea1ab135fecb5d9b9e82711114bb656aac 100644 (file)
@@ -1,4 +1,4 @@
-CC=gcc -Wall -std=gnu99 -ggdb -Wno-unused-function
+CC=gcc -Werror -Wextra -Wall -Wno-unused-parameter -std=gnu99 -ggdb -Wno-unused-function
 
 .PHONY: all clean
 all: parsertest
index ddac58f93469910296ec287d5657cf2563e1652a..869518906ee4bc137d050455f0a251c9b5462740 100644 (file)
@@ -190,7 +190,7 @@ static bytecoded_builtin bytecoded_builtins[] = {
 
 
 block builtins_bind(block b) {
-  for (int i=0; i<sizeof(bytecoded_builtins)/sizeof(bytecoded_builtins[0]); i++) {
+  for (unsigned i=0; i<sizeof(bytecoded_builtins)/sizeof(bytecoded_builtins[0]); i++) {
     b = block_bind(bytecoded_builtins[i](), b, OP_IS_CALL_PSEUDO);
   }
   return gen_cbinding(&builtins, b);
index eba2f1df4727f45ce3d0d3d64d1f80c015dbb889..6b0948c5190bbd38ca8a4e3ebc940f62a38a05e9 100644 (file)
@@ -332,10 +332,9 @@ jv jq_next() {
       int idx = jv_number_value(stack_pop().value);
       stackval container = stack_pop();
 
-      int is_array, keep_going;
+      int keep_going;
       jv key, value;
       if (jv_get_kind(container.value) == JV_KIND_ARRAY) {
-        is_array = 1;
         if (opcode == EACH) idx = 0;
         else idx = idx + 1;
         keep_going = idx < jv_array_length(jv_copy(container.value));
@@ -344,7 +343,6 @@ jv jq_next() {
           value = jv_array_get(jv_copy(container.value), idx);
         }
       } else if (jv_get_kind(container.value) == JV_KIND_OBJECT) {
-        is_array = 0;
         if (opcode == EACH) idx = jv_object_iter(container.value);
         else idx = jv_object_iter_next(container.value, idx);
         keep_going = jv_object_iter_valid(container.value, idx);
index 3128a6ca8998f326d328ba1c58c25a999592d1ff..d485d227fc28a427c45d49d21270c0b01016382c 100644 (file)
@@ -53,7 +53,8 @@ static void forkable_stack_free(struct forkable_stack* s) {
   s->stk = 0;
 }
 
-static void* forkable_stack_push(struct forkable_stack* s, size_t size) {
+static void* forkable_stack_push(struct forkable_stack* s, size_t sz_size) {
+  int size = (int)sz_size;
   forkable_stack_check(s);
   int curr = s->pos < s->savedlimit ? s->pos : s->savedlimit;
   if (curr - size < 0) {
index 9d8dc3c0a8b943e7a0eaa78b82766a1bfa9d6335..2179222daf0e21f938ebf32eba191b35cd991a1e 100644 (file)
@@ -5,7 +5,7 @@ mask = lambda n: (1 << n) - 1
 
 def print_table(type, name, t):
     assert len(t) == 256
-    print "const static",type, name+"[]", "="
+    print "static const",type, name+"[]", "="
     first = True
     for i in range(0,len(t),16):
         print (" {" if i == 0 else "  ") +\
diff --git a/c/jv.c b/c/jv.c
index 51070636f50538efe9cd8d5968d25b5edae85899..2d91366b8728b0886aa79b0ad5105f1d79e1af90 100644 (file)
--- a/c/jv.c
+++ b/c/jv.c
@@ -387,8 +387,8 @@ static uint32_t jvp_string_length(jvp_string* s) {
 }
 
 static uint32_t jvp_string_remaining_space(jvp_string* s) {
+  assert(s->alloc_length >= jvp_string_length(s));
   uint32_t r = s->alloc_length - jvp_string_length(s);
-  assert(r >= 0);
   return r;
 }