mirror of
https://github.com/fluencelabs/redis
synced 2025-03-20 01:20:50 +00:00
use function to determine length of a single entry
This commit is contained in:
parent
3819207933
commit
06278a6758
7
zipmap.c
7
zipmap.c
@ -201,7 +201,6 @@ static unsigned int zipmapRawValueLength(unsigned char *p) {
|
|||||||
* free space if any). */
|
* free space if any). */
|
||||||
static unsigned int zipmapRawEntryLength(unsigned char *p) {
|
static unsigned int zipmapRawEntryLength(unsigned char *p) {
|
||||||
unsigned int l = zipmapRawKeyLength(p);
|
unsigned int l = zipmapRawKeyLength(p);
|
||||||
|
|
||||||
return l + zipmapRawValueLength(p+l);
|
return l + zipmapRawValueLength(p+l);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,14 +231,10 @@ unsigned char *zipmapSet(unsigned char *zm, unsigned char *key, unsigned int kle
|
|||||||
/* Increase zipmap length (this is an insert) */
|
/* Increase zipmap length (this is an insert) */
|
||||||
if (zm[0] < ZIPMAP_BIGLEN) zm[0]++;
|
if (zm[0] < ZIPMAP_BIGLEN) zm[0]++;
|
||||||
} else {
|
} else {
|
||||||
unsigned char *b = p;
|
|
||||||
|
|
||||||
/* Key found. Is there enough space for the new value? */
|
/* Key found. Is there enough space for the new value? */
|
||||||
/* Compute the total length: */
|
/* Compute the total length: */
|
||||||
if (update) *update = 1;
|
if (update) *update = 1;
|
||||||
freelen = zipmapRawKeyLength(b);
|
freelen = zipmapRawEntryLength(p);
|
||||||
b += freelen;
|
|
||||||
freelen += zipmapRawValueLength(b);
|
|
||||||
if (freelen < reqlen) {
|
if (freelen < reqlen) {
|
||||||
/* Move remaining entries to the current position, so this
|
/* Move remaining entries to the current position, so this
|
||||||
* pair can be appended. Note: the +1 in memmove is caused
|
* pair can be appended. Note: the +1 in memmove is caused
|
||||||
|
Loading…
x
Reference in New Issue
Block a user