mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
hickup, re-fix dictEncObjKeyCompare
come to think of it, in theory (not in practice), getDecodedObject can return the same original object with refcount incremented, so the pointer comparision in the previous commit was invalid. so now instead of checking the encoding, we explicitly check the refcount.
This commit is contained in:
parent
e8bc306850
commit
9a3dab0a2e
@ -1223,11 +1223,11 @@ int dictEncObjKeyCompare(void *privdata, const void *key1,
|
||||
* good reasons, because it would incrRefCount() the object, which
|
||||
* is invalid. So we check to make sure dictFind() works with static
|
||||
* objects as well. */
|
||||
if (!sdsEncodedObject(o1)) o1 = getDecodedObject(o1);
|
||||
if (!sdsEncodedObject(o2)) o2 = getDecodedObject(o2);
|
||||
if (o1->refcount != OBJ_STATIC_REFCOUNT) o1 = getDecodedObject(o1);
|
||||
if (o2->refcount != OBJ_STATIC_REFCOUNT) o2 = getDecodedObject(o2);
|
||||
cmp = dictSdsKeyCompare(privdata,o1->ptr,o2->ptr);
|
||||
if (o1!=key1) decrRefCount(o1);
|
||||
if (o2!=key2) decrRefCount(o2);
|
||||
if (o1->refcount != OBJ_STATIC_REFCOUNT) decrRefCount(o1);
|
||||
if (o2->refcount != OBJ_STATIC_REFCOUNT) decrRefCount(o2);
|
||||
return cmp;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user