From 96c5ffdc86ea279d8123094b72c2c4f575f71f0f Mon Sep 17 00:00:00 2001 From: John Sully Date: Wed, 29 Jan 2020 19:03:18 -0500 Subject: [PATCH] fix leak in cron Former-commit-id: c1f4e344bdaf21bc74fae6e1b0cb7fc1ce687e62 --- src/ae.cpp | 2 ++ src/cron.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ae.cpp b/src/ae.cpp index a08b23454..d84a5b0d6 100644 --- a/src/ae.cpp +++ b/src/ae.cpp @@ -130,7 +130,9 @@ struct aeCommand void *clientData; aeCommandControl *pctl; }; +#ifdef PIPE_BUF static_assert(sizeof(aeCommand) <= PIPE_BUF); +#endif void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int ) { diff --git a/src/cron.cpp b/src/cron.cpp index 2c20a5c0e..11d1f6d8c 100644 --- a/src/cron.cpp +++ b/src/cron.cpp @@ -67,6 +67,7 @@ void cronCommand(client *c) robj *o = createObject(OBJ_CRON, spjob.release()); setKey(c->db, c->argv[ARG_NAME], o); + decrRefCount(o); // use an expire to trigger execution. Note: We use a subkey expire here so legacy clients don't delete it. setExpire(c, c->db, c->argv[ARG_NAME], c->argv[ARG_NAME], base + interval); addReply(c, shared.ok); @@ -102,7 +103,7 @@ void executeCronJobExpireHook(const char *key, robj *o) int dbId = job->dbNum; if (job->fSingleShot) { - dbSyncDelete(cFake->db, keyobj); + serverAssert(dbSyncDelete(cFake->db, keyobj)); } else {