diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2021-08-30 08:28:56 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2021-08-30 09:02:49 -0400 |
commit | e7eb6c6bb024f0735798494f4e070b370d8caf8b (patch) | |
tree | 25851f2336addd1bef9d435b44610142635e52ec | |
parent | 5eb2b0b31b8994265a5125595a5830bb0981b3c6 (diff) | |
download | libgit2-e7eb6c6bb024f0735798494f4e070b370d8caf8b.tar.gz |
midx: return an error when detected
-rw-r--r-- | src/midx.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/midx.c b/src/midx.c index 9aab8b588..6a885eddc 100644 --- a/src/midx.c +++ b/src/midx.c @@ -714,8 +714,10 @@ static int midx_write( error = git_vector_init(&object_entries, git_array_size(object_entries_array), object_entry__cmp); if (error < 0) goto cleanup; - git_array_foreach (object_entries_array, i, entry) - error = git_vector_set(NULL, &object_entries, i, entry); + git_array_foreach (object_entries_array, i, entry) { + if ((error = git_vector_set(NULL, &object_entries, i, entry)) < 0) + goto cleanup; + } git_vector_set_sorted(&object_entries, 0); git_vector_sort(&object_entries); git_vector_uniq(&object_entries, NULL); @@ -751,10 +753,12 @@ static int midx_write( goto cleanup; if (entry->offset >= 0x80000000l) { word = htonl(0x80000000u | object_large_offsets_count++); - error = write_offset(entry->offset, midx_write_buf, &object_large_offsets); + if ((error = write_offset(entry->offset, midx_write_buf, &object_large_offsets)) < 0) + goto cleanup; } else { word = htonl((uint32_t)entry->offset & 0x7fffffffu); } + error = git_buf_put(&object_offsets, (const char *)&word, sizeof(word)); if (error < 0) goto cleanup; |