commit - ec889268085d81afd9751a21fd0ed9ece3a824a7
commit + 9db65d415a148f4ac83ff7a61809965bc4867f33
blob - 8d1a8019c2b1bb3c2e156528186658b513812940
blob + 61c669a831956b3a22061009e31d81ad0d368210
--- lib/pack.c
+++ lib/pack.c
SIMPLEQ_FOREACH(delta, &deltas->entries, entry) {
uint8_t *delta_buf = NULL;
size_t delta_len = 0;
- FILE *delta_file;
- delta_file = fopen(delta->path_packfile, "rb");
- if (delta_file == NULL) {
- err = got_error_from_errno();
- goto done;
- }
-
if (n == 0) {
+ FILE *delta_file;
+
/* Plain object types are the delta base. */
if (delta->type != GOT_OBJ_TYPE_COMMIT &&
delta->type != GOT_OBJ_TYPE_TREE &&
goto done;
}
+ delta_file = fopen(delta->path_packfile, "rb");
+ if (delta_file == NULL) {
+ err = got_error_from_errno();
+ goto done;
+ }
+
if (fseeko(delta_file, delta->offset + delta->tslen,
SEEK_SET) != 0) {
fclose(delta_file);
get_cached_delta(&delta_buf, &delta_len, delta->data_offset,
path_packfile, repo);
if (delta_buf == NULL) {
+ FILE *delta_file = fopen(delta->path_packfile, "rb");
+ if (delta_file == NULL) {
+ err = got_error_from_errno();
+ goto done;
+ }
if (fseeko(delta_file, delta->data_offset, SEEK_CUR)
!= 0) {
fclose(delta_file);
delta_len, path_packfile, repo);
if (err)
goto done;
- } else
- fclose(delta_file);
+ }
/* delta_buf is now cached */
err = got_delta_apply(base_file, delta_buf, delta_len,