]> asedeno.scripts.mit.edu Git - git.git/blobdiff - archive-tar.c
git.el: Make sure we never insert the same file twice.
[git.git] / archive-tar.c
index cc94cf3672cfe9e15afd74d8156fe1cf5df9e8f6..e1bced56093dc08bbc260736637af3356b8598bb 100644 (file)
@@ -3,7 +3,6 @@
  */
 #include "cache.h"
 #include "commit.h"
-#include "strbuf.h"
 #include "tar.h"
 #include "builtin.h"
 #include "archive.h"
@@ -239,15 +238,14 @@ static int write_tar_entry(const unsigned char *sha1,
                            const char *filename, unsigned mode, int stage)
 {
        static struct strbuf path = STRBUF_INIT;
-       int filenamelen = strlen(filename);
        void *buffer;
        enum object_type type;
        unsigned long size;
 
-       strbuf_grow(&path, MAX(PATH_MAX, baselen + filenamelen + 1));
        strbuf_reset(&path);
+       strbuf_grow(&path, PATH_MAX);
        strbuf_add(&path, base, baselen);
-       strbuf_add(&path, filename, filenamelen);
+       strbuf_addstr(&path, filename);
        if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
                strbuf_addch(&path, '/');
                buffer = NULL;