Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
7de2f7e0
Commit
7de2f7e0
authored
Aug 13, 2012
by
Pieter Noordhuis
Committed by
antirez
Aug 22, 2012
Browse files
Set p to its new offset before modifying it
parent
2a18c2c4
Changes
1
Show whitespace changes
Inline
Side-by-side
src/ziplist.c
View file @
7de2f7e0
...
...
@@ -445,12 +445,13 @@ static unsigned char *__ziplistDelete(unsigned char *zl, unsigned char *p, unsig
totlen
=
p
-
first
.
p
;
if
(
totlen
>
0
)
{
if
(
p
[
0
]
!=
ZIP_END
)
{
/*
Tricky: s
toring
the
prevlen in this entry m
ight reduce or
*
increase the
number of bytes
needed,
compare
d
to the current
*
prevlen. Note that we can always
store this
length
because
*
it was previously
stored by an entry that is being deleted. */
/*
S
toring
`
prev
raw
len
`
in this entry m
ay increase or decrease the
* number of bytes
required
compare to the current
`prevrawlen`.
*
There always is room to
store this
,
because
it was previously
* stored by an entry that is
now
being deleted. */
nextdiff
=
zipPrevLenByteDiff
(
p
,
first
.
prevrawlen
);
zipPrevEncodeLength
(
p
-
nextdiff
,
first
.
prevrawlen
);
p
-=
nextdiff
;
zipPrevEncodeLength
(
p
,
first
.
prevrawlen
);
/* Update offset for tail */
ZIPLIST_TAIL_OFFSET
(
zl
)
-=
totlen
;
...
...
@@ -463,7 +464,7 @@ static unsigned char *__ziplistDelete(unsigned char *zl, unsigned char *p, unsig
ZIPLIST_TAIL_OFFSET
(
zl
)
+=
nextdiff
;
/* Move tail to the front of the ziplist */
memmove
(
first
.
p
,
p
-
nextdiff
,
ZIPLIST_BYTES
(
zl
)
-
(
p
-
zl
)
-
1
+
nextdiff
);
memmove
(
first
.
p
,
p
,
ZIPLIST_BYTES
(
zl
)
-
(
p
-
zl
)
-
1
);
}
else
{
/* The entire tail was deleted. No need to move memory. */
ZIPLIST_TAIL_OFFSET
(
zl
)
=
(
first
.
p
-
zl
)
-
first
.
prevrawlen
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment