From 93a5b4a16d699eaf890970777c19f19b9d545782 Mon Sep 17 00:00:00 2001 From: zthhhhh <97zthhhh@gamil.com> Date: Mon, 27 Jul 2026 18:13:21 +0800 Subject: [PATCH] Fix memory leak in ivfrescan --- src/ivfscan.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ivfscan.c b/src/ivfscan.c index 00aad28..f9cd248 100644 --- a/src/ivfscan.c +++ b/src/ivfscan.c @@ -282,6 +282,7 @@ ivfflatbeginscan(Relation index, int nkeys, int norderbys) so->probes = probes; so->maxProbes = maxProbes; so->dimensions = dimensions; + so->value = PointerGetDatum(NULL); /* Set support functions */ so->procinfo = index_getprocinfo(index, 1, IVFFLAT_DISTANCE_PROC); @@ -340,6 +341,12 @@ ivfflatrescan(IndexScanDesc scan, ScanKey keys, int nkeys, ScanKey orderbys, int pairingheap_reset(so->listQueue); so->listIndex = 0; + if (so->normprocinfo != NULL && DatumGetPointer(so->value) != NULL) + { + pfree(DatumGetPointer(so->value)); + so->value = PointerGetDatum(NULL); + } + if (keys && scan->numberOfKeys > 0) memmove(scan->keyData, keys, scan->numberOfKeys * sizeof(ScanKeyData));