]> git.saurik.com Git - redis.git/blobdiff - sds.c
Version is now 1.3.1
[redis.git] / sds.c
diff --git a/sds.c b/sds.c
index 8e9fd96d9befd2a4b4b7eb7ca9317001df24f8b8..497d00f58e304228e59b1cea424e3b8fa6d3cb3b 100644 (file)
--- a/sds.c
+++ b/sds.c
@@ -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;
@@ -277,6 +277,10 @@ sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count) {
     if (tokens == NULL) sdsOomAbort();
 #endif
     if (seplen < 1 || len < 0 || tokens == NULL) return NULL;
+    if (len == 0) {
+        *count = 0;
+        return tokens;
+    }
     for (j = 0; j < (len-(seplen-1)); j++) {
         /* make sure there is room for the next element and the final one */
         if (slots < elements+2) {