]> git.saurik.com Git - redis.git/blobdiff - sds.c
use the right object when cleaning up after zunion/zinter (fixes issue 216)
[redis.git] / sds.c
diff --git a/sds.c b/sds.c
index 6d18d1fd008b18e5e6de7785ecb47224aa04efe7..8d1edcb7ec977d9969b9146a436935dcd4c3eb81 100644 (file)
--- a/sds.c
+++ b/sds.c
@@ -1,6 +1,6 @@
 /* SDSLib, A C dynamic strings library
  *
- * Copyright (c) 2006-2009, Salvatore Sanfilippo <antirez at gmail dot com>
+ * Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -140,7 +140,7 @@ sds sdscpylen(sds s, char *t, size_t len) {
     size_t totlen = sh->free+sh->len;
 
     if (totlen < len) {
-        s = sdsMakeRoomFor(s,len-totlen);
+        s = sdsMakeRoomFor(s,len-sh->len);
         if (s == NULL) return NULL;
         sh = (void*) (s-(sizeof(struct sdshdr)));
         totlen = sh->free+sh->len;
@@ -159,7 +159,7 @@ sds sdscpy(sds s, char *t) {
 sds sdscatprintf(sds s, const char *fmt, ...) {
     va_list ap;
     char *buf, *t;
-    size_t buflen = 32;
+    size_t buflen = 16;
 
     while(1) {
         buf = zmalloc(buflen);