Skip to content

Commit dc68d16

Browse files
GuyAv46github-actions[bot]
authored andcommitted
Fix a rare leak in GC - [MOD-11123] (#7315)
fix leak (cherry picked from commit 81036bb)
1 parent c7933f2 commit dc68d16

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

src/fork_gc.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -820,18 +820,15 @@ typedef struct {
820820
double uniqueSum;
821821
} NumGcInfo;
822822

823+
// Assumes pointers are valid and their targets are zeroed
823824
static int recvCardvals(ForkGC *fgc, arrayof(CardinalityValue) *tgt, size_t *len, double *uniqueSum) {
824825
// len = CardinalityValue count
825826
if (FGC_recvFixed(fgc, len, sizeof(*len)) != REDISMODULE_OK) {
826827
return REDISMODULE_ERR;
827828
}
828829
if (!*len) {
829-
*tgt = NULL;
830830
return REDISMODULE_OK;
831831
}
832-
if (*tgt) {
833-
rm_free(*tgt);
834-
}
835832

836833
// We use array_newlen since we read the cardinality values entries directly to the memory in tgt.
837834
// Meaning the header of the array will not be updates, including the length.
@@ -849,6 +846,7 @@ static int recvCardvals(ForkGC *fgc, arrayof(CardinalityValue) *tgt, size_t *len
849846
return REDISMODULE_OK;
850847
}
851848

849+
// Assumes that ninfo is zeroed
852850
static FGCError recvNumIdx(ForkGC *gc, NumGcInfo *ninfo) {
853851
if (FGC_recvFixed(gc, &ninfo->node, sizeof(ninfo->node)) != REDISMODULE_OK) {
854852
goto error;
@@ -870,6 +868,7 @@ static FGCError recvNumIdx(ForkGC *gc, NumGcInfo *ninfo) {
870868
error:
871869
printf("Error receiving numeric index!\n");
872870
freeInvIdx(&ninfo->idxbufs, &ninfo->info);
871+
array_free(ninfo->cardValsArr);
873872
memset(ninfo, 0, sizeof(*ninfo));
874873
return FGC_CHILD_ERROR;
875874
}

0 commit comments

Comments
 (0)