Commit Diff


commit - 56866f4a1fa810c53b06c97db0f3db3888de1ff7
commit + 0bd0053c348d6c7ff2adec2bec651f15f2317f23
blob - de4af7d6403dc66578acef343fd92450e6cefa05
blob + f9bf359965c62584d6d45d87cd96d72668bf8a6e
--- lib/pack.c
+++ lib/pack.c
@@ -1354,9 +1354,12 @@ got_packfile_extract_object(FILE **f, struct got_objec
 			goto done;
 		}
 
-		if (obj->size < GOT_DELTA_RESULT_SIZE_CACHED_MAX)
-			*f = fmemopen(NULL, obj->size, "w+");
-		else
+		if (obj->size < GOT_DELTA_RESULT_SIZE_CACHED_MAX) {
+			size_t size = obj->size;
+			if (size == 0) /* empty file */
+				size = 1;
+			*f = fmemopen(NULL, size, "w+");
+		} else
 			*f = got_opentemp();
 		if (*f == NULL) {
 			err = got_error(GOT_ERR_FILE_OPEN);