From 2643c691be0a8fe25be52a47804f3fef49c7317a Mon Sep 17 00:00:00 2001 From: Vitah Lin Date: Mon, 28 Feb 2022 23:06:39 +0800 Subject: [PATCH] Fix memory leak in RM_StreamIteratorStop and moduleFreeKeyIterator (#10353) * Fix memory leak in RM_StreamIteratorStop * Fix memory leak in moduleFreeKeyIterator (cherry picked from commit dff153ff247478015d0cf93f0f46a222169ac09c) --- src/module.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/module.c b/src/module.c index 01a42f904d..26ab125aa6 100644 --- a/src/module.c +++ b/src/module.c @@ -2284,7 +2284,10 @@ static void moduleCloseKey(RedisModuleKey *key) { int signal = SHOULD_SIGNAL_MODIFIED_KEYS(key->ctx); if ((key->mode & REDISMODULE_WRITE) && signal) signalModifiedKey(key->ctx->client,key->db,key->key); - if (key->iter) zfree(key->iter); + if (key->iter) { + streamIteratorStop(key->iter); + zfree(key->iter); + } RM_ZsetRangeStop(key); if (key && key->value && key->value->type == OBJ_STREAM && key->u.stream.signalready) { @@ -3541,6 +3544,7 @@ int RM_StreamIteratorStop(RedisModuleKey *key) { errno = EBADF; return REDISMODULE_ERR; } + streamIteratorStop(key->iter); zfree(key->iter); key->iter = NULL; return REDISMODULE_OK;