From 395e11255cc924c2ee4cc4ddcbf30d269b193316 Mon Sep 17 00:00:00 2001 From: John Doe Date: Tue, 17 Feb 2015 00:03:21 +0800 Subject: [PATCH 1/2] Fix quicklist Pop() result Closes #2398 --- src/quicklist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quicklist.c b/src/quicklist.c index 6682b208..d2371a9b 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; From 552e5908bb0dc7e9c7db20db20315e961612db33 Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Tue, 17 Feb 2015 11:28:45 -0500 Subject: [PATCH 2/2] Fix quicklist tests for Pop() Now the tests actually compare return values instead of just verifying _something_ got returned. --- src/quicklist.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/quicklist.c b/src/quicklist.c index d2371a9b..be02e327 100644 --- a/src/quicklist.c +++ b/src/quicklist.c @@ -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);