diff options
Diffstat (limited to 'src/slowlog.c')
-rw-r--r-- | src/slowlog.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/slowlog.c b/src/slowlog.c index 805ee1d77..a95147153 100644 --- a/src/slowlog.c +++ b/src/slowlog.c @@ -72,9 +72,12 @@ slowlogEntry *slowlogCreateEntry(client *c, robj **argv, int argc, long long dur (unsigned long) sdslen(argv[j]->ptr) - SLOWLOG_ENTRY_MAX_STRING); se->argv[j] = createObject(OBJ_STRING,s); - } else { + } else if (argv[j]->refcount == OBJ_SHARED_REFCOUNT) { se->argv[j] = argv[j]; - incrRefCount(argv[j]); + } else { + /* Duplicate a string object, + * avoid memory leak for lazyfree. */ + se->argv[j] = dupStringObject(argv[j]); } } } |