Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
1333f98d
Commit
1333f98d
authored
Dec 15, 2010
by
Pieter Noordhuis
Browse files
Use helper functions in APPEND
parent
8f8eeffe
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/t_string.c
View file @
1333f98d
...
...
@@ -393,31 +393,26 @@ void decrbyCommand(redisClient *c) {
}
void
appendCommand
(
redisClient
*
c
)
{
int
retval
;
size_t
totlen
;
robj
*
o
,
*
append
;
o
=
lookupKeyWrite
(
c
->
db
,
c
->
argv
[
1
]);
c
->
argv
[
2
]
=
tryObjectEncoding
(
c
->
argv
[
2
]);
if
(
o
==
NULL
)
{
/* Create the key */
retval
=
dbAdd
(
c
->
db
,
c
->
argv
[
1
],
c
->
argv
[
2
]);
c
->
argv
[
2
]
=
tryObjectEncoding
(
c
->
argv
[
2
]);
dbAdd
(
c
->
db
,
c
->
argv
[
1
],
c
->
argv
[
2
]);
incrRefCount
(
c
->
argv
[
2
]);
totlen
=
stringObjectLen
(
c
->
argv
[
2
]);
}
else
{
if
(
o
->
type
!=
REDIS_STRING
)
{
addReply
(
c
,
shared
.
wrongtypeerr
);
/* Key exists, check type */
if
(
checkType
(
c
,
o
,
REDIS_STRING
))
return
;
}
append
=
getDecodedObject
(
c
->
argv
[
2
]);
if
(
o
->
encoding
==
REDIS_ENCODING_RAW
&&
(
sdslen
(
o
->
ptr
)
+
sdslen
(
append
->
ptr
))
>
512
*
1024
*
1024
)
{
addReplyError
(
c
,
"string exceeds maximum allowed size (512MB)"
);
decrRefCount
(
append
);
/* "append" is an argument, so always an sds */
append
=
c
->
argv
[
2
];
totlen
=
stringObjectLen
(
o
)
+
sdslen
(
append
->
ptr
);
if
(
checkStringLength
(
c
,
totlen
)
!=
REDIS_OK
)
return
;
}
/* If the object is shared or encoded, we have to make a copy */
if
(
o
->
refcount
!=
1
||
o
->
encoding
!=
REDIS_ENCODING_RAW
)
{
...
...
@@ -429,7 +424,6 @@ void appendCommand(redisClient *c) {
/* Append the value */
o
->
ptr
=
sdscatlen
(
o
->
ptr
,
append
->
ptr
,
sdslen
(
append
->
ptr
));
decrRefCount
(
append
);
totlen
=
sdslen
(
o
->
ptr
);
}
touchWatchedKey
(
c
->
db
,
c
->
argv
[
1
]);
...
...
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