X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=entry.c;h=8fb99bc83f2d168e4a374d076608a2f42abbe434;hb=0c82a398ec3302294b0bfe33b653a6e90dcf351b;hp=410b758aab7efc6d777f0344500f97b1cbc52946;hpb=92e802c6ccb96d1b5e8561b0a136d43d82253293;p=git.git diff --git a/entry.c b/entry.c index 410b758a..8fb99bc8 100644 --- a/entry.c +++ b/entry.c @@ -70,7 +70,6 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout unsigned long size; long wrote; char type[20]; - char target[1024]; new = read_sha1_file(ce->sha1, type, &size); if (!new || strcmp(type, "blob")) { @@ -94,12 +93,10 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout return error("git-checkout-index: unable to write file %s", path); break; case S_IFLNK: - memcpy(target, new, size); - target[size] = '\0'; - if (symlink(target, path)) { + if (symlink(new, path)) { free(new); - return error("git-checkout-index: unable to create symlink %s (%s)", - path, strerror(errno)); + return error("git-checkout-index: unable to create " + "symlink %s (%s)", path, strerror(errno)); } free(new); break; @@ -126,7 +123,7 @@ int checkout_entry(struct cache_entry *ce, struct checkout *state) strcpy(path + len, ce->name); if (!lstat(path, &st)) { - unsigned changed = ce_match_stat(ce, &st); + unsigned changed = ce_match_stat(ce, &st, 1); if (!changed) return 0; if (!state->force) {