Merge with master.
authorJunio C Hamano <junkio@cox.net>
Tue, 9 Aug 2005 05:57:57 +0000 (22:57 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 9 Aug 2005 05:57:57 +0000 (22:57 -0700)
This merges commit
    c882bc932f6702a935c748893536356b0bba11ce
from master into our head commit
    e764a10b17610ed9b3969bdb351e09f9635eb0ab

Sincerely,
    jit-merge command.

csum-file.c
git-clone-dumb-http
git-fetch-script
git-ls-remote-script
git-tag-script
pack-objects.c
path.c
sha1_file.c

index 907efbf..c66b9eb 100644 (file)
@@ -45,6 +45,7 @@ int sha1close(struct sha1file *f, unsigned char *result, int update)
                sha1flush(f, 20);
        if (close(f->fd))
                die("%s: sha1 file error on close (%s)", f->name, strerror(errno));
+       free(f);
        return 0;
 }
 
index 8203c67..5052708 100755 (executable)
@@ -14,7 +14,7 @@ if [ -n "$GIT_SSL_NO_VERIFY" ]; then
 fi
 http_fetch () {
        # $1 = Remote, $2 = Local
-       curl -ns $curl_extra_args "$1" >"$2"
+       curl -nsf $curl_extra_args "$1" >"$2"
 }
 
 cd "$D" && 
index a0326f0..24f0a5e 100755 (executable)
@@ -15,7 +15,7 @@ http://* | https://*)
         fi
        _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' &&
        _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" &&
-       head=$(curl -ns $curl_extra_args "$merge_repo/$merge_head") &&
+       head=$(curl -nsf $curl_extra_args "$merge_repo/$merge_head") &&
        expr "$head" : "$_x40\$" >/dev/null || {
                echo >&2 "Failed to fetch $merge_head from $merge_repo"
                exit 1
index 921d3f8..31cdac8 100755 (executable)
@@ -46,7 +46,7 @@ http://* | https://* )
         if [ -n "$GIT_SSL_NO_VERIFY" ]; then
             curl_extra_args="-k"
         fi
-       curl -ns $curl_extra_args "$peek_repo/info/refs" || exit 1
+       curl -nsf $curl_extra_args "$peek_repo/info/refs" || exit 1
        ;;
 
 rsync://* )
index 4917f99..d3074a8 100755 (executable)
@@ -4,13 +4,14 @@
 . git-sh-setup-script || die "Not a git archive"
 
 usage () {
-    echo >&2 "Usage: git-tag-script [-a | -s] [-f] tagname"
+    echo >&2 "Usage: git-tag-script [-a | -s] [-f] [-m "tag message"] tagname"
     exit 1
 }
 
 annotate=
 signed=
 force=
+message=
 while case "$#" in 0) break ;; esac
 do
     case "$1" in
@@ -24,6 +25,11 @@ do
     -f)
        force=1
        ;;
+    -m)
+       annotate=1
+       shift
+       message="$1"
+       ;;
     -*)
         usage
        ;;
@@ -48,10 +54,14 @@ tagger=$(git-var GIT_COMMITTER_IDENT) || exit 1
 trap 'rm -f .tmp-tag* .tagmsg .editmsg' 0
 
 if [ "$annotate" ]; then
-    ( echo "#"
-      echo "# Write a tag message"
-      echo "#" ) > .editmsg
-    ${VISUAL:-${EDITOR:-vi}} .editmsg || exit
+    if [ -z "$message" ]; then
+        ( echo "#"
+          echo "# Write a tag message"
+          echo "#" ) > .editmsg
+        ${VISUAL:-${EDITOR:-vi}} .editmsg || exit
+    else
+        echo "$message" > .editmsg
+    fi
 
     grep -v '^#' < .editmsg | git-stripspace > .tagmsg
 
index ed24a33..3d62278 100644 (file)
@@ -382,6 +382,10 @@ static void find_deltas(struct object_entry **list, int window, int depth)
                if (idx >= window)
                        idx = 0;
        }
+
+       for (i = 0; i < window; ++i)
+               free(array[i].data);
+       free(array);
 }
 
 int main(int argc, char **argv)
diff --git a/path.c b/path.c
index 7ef0d1b..b85f087 100644 (file)
--- a/path.c
+++ b/path.c
@@ -68,8 +68,13 @@ int git_mkstemp(char *path, size_t len, const char *template)
        if ((env = getenv("TMPDIR")) == NULL) {
                strcpy(pch, "/tmp/");
                len -= 5;
-       } else
-               len -= snprintf(pch, len, "%s/", env);
+               pch += 5;
+       } else {
+               size_t n = snprintf(pch, len, "%s/", env);
+
+               len -= n;
+               pch += n;
+       }
 
        safe_strncpy(pch, template, len);
 
index a17a6d1..e9285c1 100644 (file)
@@ -1165,6 +1165,7 @@ void *read_object_with_reference(const unsigned char *sha1,
                        free(buffer);
                        return NULL;
                }
+               free(buffer);
                /* Now we have the ID of the referred-to object in
                 * actual_sha1.  Check again. */
        }
@@ -1296,8 +1297,11 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1)
        ssize_t size;
        unsigned long objsize;
        int posn = 0;
-       void *buf = map_sha1_file_internal(sha1, &objsize);
+       void *map = map_sha1_file_internal(sha1, &objsize);
+       void *buf = map;
+       void *temp_obj = NULL;
        z_stream stream;
+
        if (!buf) {
                unsigned char *unpacked;
                unsigned long len;
@@ -1313,7 +1317,7 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1)
                memset(&stream, 0, sizeof(stream));
                deflateInit(&stream, Z_BEST_COMPRESSION);
                size = deflateBound(&stream, len + hdrlen);
-               buf = xmalloc(size);
+               temp_obj = buf = xmalloc(size);
 
                /* Compress it */
                stream.next_out = buf;
@@ -1331,6 +1335,7 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1)
                while (deflate(&stream, Z_FINISH) == Z_OK)
                        /* nothing */;
                deflateEnd(&stream);
+               free(unpacked);
                
                objsize = stream.total_out;
        }
@@ -1347,6 +1352,12 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1)
                }
                posn += size;
        } while (posn < objsize);
+
+       if (map)
+               munmap(map, objsize);
+       if (temp_obj)
+               free(temp_obj);
+
        return 0;
 }