sha1_file: release strbuf on error return in index_path()

strbuf_readlink() already frees the buffer for us on error.  Clean up
if write_sha1_file() fails as well instead of returning early.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Rene Scharfe 2017-08-30 20:00:29 +02:00 коммит произвёл Junio C Hamano
Родитель 872d651f52
Коммит ea8e029785
1 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -1820,6 +1820,7 @@ int index_path(struct object_id *oid, const char *path, struct stat *st, unsigne
{
int fd;
struct strbuf sb = STRBUF_INIT;
int rc = 0;
switch (st->st_mode & S_IFMT) {
case S_IFREG:
@ -1836,8 +1837,7 @@ int index_path(struct object_id *oid, const char *path, struct stat *st, unsigne
if (!(flags & HASH_WRITE_OBJECT))
hash_sha1_file(sb.buf, sb.len, blob_type, oid->hash);
else if (write_sha1_file(sb.buf, sb.len, blob_type, oid->hash))
return error("%s: failed to insert into database",
path);
rc = error("%s: failed to insert into database", path);
strbuf_release(&sb);
break;
case S_IFDIR:
@ -1845,7 +1845,7 @@ int index_path(struct object_id *oid, const char *path, struct stat *st, unsigne
default:
return error("%s: unsupported file type", path);
}
return 0;
return rc;
}
int read_pack_header(int fd, struct pack_header *header)