Btrfs-progs: don't allocate one byte too much each time
authorStefan Behrens <sbehrens@giantdisaster.de>
Tue, 9 Apr 2013 17:08:41 +0000 (19:08 +0200)
committerDavid Sterba <dsterba@suse.cz>
Tue, 23 Apr 2013 16:56:24 +0000 (18:56 +0200)
str1 + '/' + str2 + '\0' requires a buffer with the size
strlen(str1) + strlen(str2) + 2 bytes.

str1 + '/' + str2 + '/' + str3 + '\0' requires a buffer with the size
strlen(str1) + strlen(str2) + strlen(str3) + 3 bytes.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
send-utils.c

index 182778a..bc0feb8 100644 (file)
@@ -332,7 +332,7 @@ char *path_cat(const char *p1, const char *p2)
 {
        int p1_len = strlen(p1);
        int p2_len = strlen(p2);
-       char *new = malloc(p1_len + p2_len + 3);
+       char *new = malloc(p1_len + p2_len + 2);
 
        if (p1_len && p1[p1_len - 1] == '/')
                p1_len--;
@@ -348,7 +348,7 @@ char *path_cat3(const char *p1, const char *p2, const char *p3)
        int p1_len = strlen(p1);
        int p2_len = strlen(p2);
        int p3_len = strlen(p3);
-       char *new = malloc(p1_len + p2_len + p3_len + 4);
+       char *new = malloc(p1_len + p2_len + p3_len + 3);
 
        if (p1_len && p1[p1_len - 1] == '/')
                p1_len--;