Skip to content

Commit

Permalink
reftable/pq: handle allocation failures when adding entries
Browse files Browse the repository at this point in the history
Handle allocation failures when adding entries to the pqueue. Adapt its
only caller accordingly.

Signed-off-by: Patrick Steinhardt <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
pks-t authored and gitster committed Oct 2, 2024
1 parent 2d5dbb3 commit d0501c8
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
5 changes: 4 additions & 1 deletion reftable/merged.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ static int merged_iter_advance_subiter(struct merged_iter *mi, size_t idx)
if (err)
return err;

merged_iter_pqueue_add(&mi->pq, &e);
err = merged_iter_pqueue_add(&mi->pq, &e);
if (err)
return err;

return 0;
}

Expand Down
7 changes: 6 additions & 1 deletion reftable/pq.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ license that can be found in the LICENSE file or at

#include "pq.h"

#include "reftable-error.h"
#include "reftable-record.h"
#include "system.h"
#include "basics.h"
Expand Down Expand Up @@ -44,11 +45,13 @@ struct pq_entry merged_iter_pqueue_remove(struct merged_iter_pqueue *pq)
return e;
}

void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e)
int merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e)
{
size_t i = 0;

REFTABLE_ALLOC_GROW(pq->heap, pq->len + 1, pq->cap);
if (!pq->heap)
return REFTABLE_OUT_OF_MEMORY_ERROR;
pq->heap[pq->len++] = *e;

i = pq->len - 1;
Expand All @@ -59,6 +62,8 @@ void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry
SWAP(pq->heap[j], pq->heap[i]);
i = j;
}

return 0;
}

void merged_iter_pqueue_release(struct merged_iter_pqueue *pq)
Expand Down
2 changes: 1 addition & 1 deletion reftable/pq.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ struct merged_iter_pqueue {
};

struct pq_entry merged_iter_pqueue_remove(struct merged_iter_pqueue *pq);
void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e);
int merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e);
void merged_iter_pqueue_release(struct merged_iter_pqueue *pq);
int pq_less(struct pq_entry *a, struct pq_entry *b);

Expand Down

0 comments on commit d0501c8

Please sign in to comment.