summaryrefslogtreecommitdiff
path: root/src/sort.c
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-08-04 09:20:55 +0200
committerantirez <antirez@gmail.com>2015-10-01 13:02:24 +0200
commita7c5be18a81c120b4bdeb139072f27c899fe1a4d (patch)
treec7cf812a74ee27d575607a116b6c3fb4cbf91146 /src/sort.c
parent86d48efbfd40cba447025c36ac6b0c5507b032fd (diff)
downloadredis-a7c5be18a81c120b4bdeb139072f27c899fe1a4d.tar.gz
Lazyfree: Sorted sets convereted to plain SDS. (several commits squashed)
Diffstat (limited to 'src/sort.c')
-rw-r--r--src/sort.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/sort.c b/src/sort.c
index af185dbd4..536302bda 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -399,7 +399,7 @@ void sortCommand(client *c) {
zset *zs = sortval->ptr;
zskiplist *zsl = zs->zsl;
zskiplistNode *ln;
- robj *ele;
+ sds sdsele;
int rangelen = vectorlen;
/* Check if starting point is trivial, before doing log(N) lookup. */
@@ -417,8 +417,8 @@ void sortCommand(client *c) {
while(rangelen--) {
serverAssertWithInfo(c,sortval,ln != NULL);
- ele = ln->obj;
- vector[j].obj = ele;
+ sdsele = ln->ele;
+ vector[j].obj = createStringObject(sdsele,sdslen(sdsele));
vector[j].u.score = 0;
vector[j].u.cmpobj = NULL;
j++;
@@ -431,9 +431,11 @@ void sortCommand(client *c) {
dict *set = ((zset*)sortval->ptr)->dict;
dictIterator *di;
dictEntry *setele;
+ sds sdsele;
di = dictGetIterator(set);
while((setele = dictNext(di)) != NULL) {
- vector[j].obj = dictGetKey(setele);
+ sdsele = dictGetKey(setele);
+ vector[j].obj = createStringObject(sdsele,sdslen(sdsele));
vector[j].u.score = 0;
vector[j].u.cmpobj = NULL;
j++;