summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deps/hiredis/sds.c9
-rw-r--r--deps/hiredis/sds.h4
-rw-r--r--src/sds.c7
-rw-r--r--src/sds.h4
4 files changed, 15 insertions, 9 deletions
diff --git a/deps/hiredis/sds.c b/deps/hiredis/sds.c
index 47b9823ea..4af9961ad 100644
--- a/deps/hiredis/sds.c
+++ b/deps/hiredis/sds.c
@@ -123,7 +123,7 @@ void sdsclear(sds s) {
/* Enlarge the free space at the end of the sds string so that the caller
* is sure that after calling this function can overwrite up to addlen
* bytes after the end of the string, plus one more byte for nul term.
- *
+ *
* Note: this does not change the *length* of the sds string as returned
* by sdslen(), but only the free buffer space we have. */
sds sdsMakeRoomFor(sds s, size_t addlen) {
@@ -200,7 +200,10 @@ size_t sdsAllocSize(sds s) {
void sdsIncrLen(sds s, int incr) {
struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
- assert(sh->free >= incr);
+ if (incr >= 0)
+ assert(sh->free >= (unsigned int)incr);
+ else
+ assert(sh->len >= (unsigned int)(-incr));
sh->len += incr;
sh->free -= incr;
assert(sh->free >= 0);
@@ -457,7 +460,7 @@ sds sdscatfmt(sds s, char const *fmt, ...) {
i = initlen; /* Position of the next byte to write to dest str. */
while(*f) {
char next, *str;
- int l;
+ unsigned int l;
long long num;
unsigned long long unum;
diff --git a/deps/hiredis/sds.h b/deps/hiredis/sds.h
index 9a604021c..37aaf7a28 100644
--- a/deps/hiredis/sds.h
+++ b/deps/hiredis/sds.h
@@ -39,8 +39,8 @@
typedef char *sds;
struct sdshdr {
- int len;
- int free;
+ unsigned int len;
+ unsigned int free;
char buf[];
};
diff --git a/src/sds.c b/src/sds.c
index fee627b99..4adcc06a8 100644
--- a/src/sds.c
+++ b/src/sds.c
@@ -200,7 +200,10 @@ size_t sdsAllocSize(sds s) {
void sdsIncrLen(sds s, int incr) {
struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
- assert(sh->free >= incr);
+ if (incr >= 0)
+ assert(sh->free >= (unsigned int)incr);
+ else
+ assert(sh->len >= (unsigned int)(-incr));
sh->len += incr;
sh->free -= incr;
assert(sh->free >= 0);
@@ -458,7 +461,7 @@ sds sdscatfmt(sds s, char const *fmt, ...) {
i = initlen; /* Position of the next byte to write to dest str. */
while(*f) {
char next, *str;
- int l;
+ unsigned int l;
long long num;
unsigned long long unum;
diff --git a/src/sds.h b/src/sds.h
index 9a604021c..37aaf7a28 100644
--- a/src/sds.h
+++ b/src/sds.h
@@ -39,8 +39,8 @@
typedef char *sds;
struct sdshdr {
- int len;
- int free;
+ unsigned int len;
+ unsigned int free;
char buf[];
};