summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvatore Sanfilippo <antirez@gmail.com>2015-02-24 17:13:39 +0100
committerSalvatore Sanfilippo <antirez@gmail.com>2015-02-24 17:13:39 +0100
commit5ff00ac8c1e70c33e539f4d2079b665d457016fd (patch)
tree2ace3f5e5dfbb342d985a3289bc1a00331eca6d5
parentfc365a3a001d0ec55e6bde914708911aa1b524c4 (diff)
parent552e5908bb0dc7e9c7db20db20315e961612db33 (diff)
downloadredis-5ff00ac8c1e70c33e539f4d2079b665d457016fd.tar.gz
Merge pull request #2401 from mattsta/fix/quicklist/pop
Fix quicklist Pop()
-rw-r--r--src/quicklist.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/quicklist.c b/src/quicklist.c
index 6682b2087..be02e3276 100644
--- a/src/quicklist.c
+++ b/src/quicklist.c
@@ -1372,7 +1372,7 @@ REDIS_STATIC void *_quicklistSaver(unsigned char *data, unsigned int sz) {
unsigned char *vstr;
if (data) {
vstr = zmalloc(sz);
- memcpy(data, vstr, sz);
+ memcpy(vstr, data, sz);
return vstr;
}
return NULL;
@@ -1757,7 +1757,8 @@ int quicklistTest(int argc, char *argv[]) {
TEST("pop 1 string from 1") {
quicklist *ql = quicklistNew(-2, options[_i]);
- quicklistPushHead(ql, genstr("hello", 331), 32);
+ char *populate = genstr("hello", 331);
+ quicklistPushHead(ql, populate, 32);
unsigned char *data;
unsigned int sz;
long long lv;
@@ -1765,6 +1766,9 @@ int quicklistTest(int argc, char *argv[]) {
quicklistPop(ql, QUICKLIST_HEAD, &data, &sz, &lv);
assert(data != NULL);
assert(sz == 32);
+ if (strcmp(populate, (char *)data))
+ ERR("Pop'd value (%.*s) didn't equal original value (%s)", sz,
+ data, populate);
zfree(data);
ql_verify(ql, 0, 0, 0, 0);
quicklistRelease(ql);
@@ -1797,6 +1801,9 @@ int quicklistTest(int argc, char *argv[]) {
assert(ret == 1);
assert(data != NULL);
assert(sz == 32);
+ if (strcmp(genstr("hello", 499 - i), (char *)data))
+ ERR("Pop'd value (%.*s) didn't equal original value (%s)",
+ sz, data, genstr("hello", 499 - i));
zfree(data);
}
ql_verify(ql, 0, 0, 0, 0);
@@ -1816,6 +1823,10 @@ int quicklistTest(int argc, char *argv[]) {
assert(ret == 1);
assert(data != NULL);
assert(sz == 32);
+ if (strcmp(genstr("hello", 499 - i), (char *)data))
+ ERR("Pop'd value (%.*s) didn't equal original value "
+ "(%s)",
+ sz, data, genstr("hello", 499 - i));
zfree(data);
} else {
assert(ret == 0);