diff options
author | Viktor Söderqvist <viktor.soderqvist@est.tech> | 2023-01-11 09:57:10 +0100 |
---|---|---|
committer | Viktor Söderqvist <viktor.soderqvist@est.tech> | 2023-01-11 09:59:24 +0100 |
commit | c84248b5d2fba04e5056bad32a5d29a5fc906e8c (patch) | |
tree | eb124954279832505715f2a76d2634ac99d8550e /src/db.c | |
parent | 25dc3b07571469a5fb004aa817a3852ade2f840f (diff) | |
download | redis-c84248b5d2fba04e5056bad32a5d29a5fc906e8c.tar.gz |
Make dictEntry opaque
Use functions for all accesses to dictEntry (except in dict.c). Dict abuses
e.g. in defrag.c have been replaced by support functions provided by dict.
Diffstat (limited to 'src/db.c')
-rw-r--r-- | src/db.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -228,7 +228,6 @@ static void dbSetValue(redisDb *db, robj *key, robj *val, int overwrite) { dictEntry *de = dictFind(db->dict,key->ptr); serverAssertWithInfo(NULL,key,de != NULL); - dictEntry auxentry = *de; robj *old = dictGetVal(de); if (server.maxmemory_policy & MAXMEMORY_FLAG_LFU) { val->lru = old->lru; @@ -246,17 +245,15 @@ static void dbSetValue(redisDb *db, robj *key, robj *val, int overwrite) { decrRefCount(old); /* Because of RM_StringDMA, old may be changed, so we need get old again */ old = dictGetVal(de); - /* Entry in auxentry may be changed, so we need update auxentry */ - auxentry = *de; } dictSetVal(db->dict, de, val); if (server.lazyfree_lazy_server_del) { freeObjAsync(key,old,db->id); - dictSetVal(db->dict, &auxentry, NULL); + } else { + /* This is just decrRefCount(old); */ + db->dict->type->valDestructor(db->dict, old); } - - dictFreeVal(db->dict, &auxentry); } /* Replace an existing key with a new value, we just replace value and don't |