autobuf: work around a warning
authorFerry Huberts <ferry.huberts@pelagic.nl>
Sat, 16 Apr 2016 19:36:40 +0000 (21:36 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Sat, 16 Apr 2016 20:29:20 +0000 (22:29 +0200)
src/common/autobuf.c:109:6: error: assuming signed overflow does not occur when assuming that (X + c) >= X is always true [-Werror=strict-overflow]
   if (new_size > autobuf->size) {
      ^

This showed up in the Android build when building with NDK r11c.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/common/autobuf.c

index 9c82fe6..6ecd5e3 100644 (file)
@@ -54,7 +54,7 @@
 #include <assert.h>
 
 
-static int autobuf_enlarge(struct autobuf *autobuf, int new_size);
+static int autobuf_enlarge(struct autobuf *autobuf, unsigned int new_size);
 
 static int ROUND_UP_TO_POWER_OF_2(int val, int pow2) {
   assert(val >= 0);
@@ -98,15 +98,16 @@ abuf_free(struct autobuf *autobuf)
 }
 
 static int
-autobuf_enlarge(struct autobuf *autobuf, int new_size)
+autobuf_enlarge(struct autobuf *autobuf, unsigned int new_size)
 {
+  /* for the the string terminator */
   new_size++;
 
   if (autobuf->size >= INT_MAX) {
     return -1;
   }
 
-  if (new_size > autobuf->size) {
+  if (new_size > (unsigned int) autobuf->size) {
     char *p;
     int roundUpSize = ROUND_UP_TO_POWER_OF_2(new_size, AUTOBUFCHUNK);
     p = realloc(autobuf->buf, roundUpSize);