diff --git a/TODO b/TODO index 74f13347..f3eaeb21 100644 --- a/TODO +++ b/TODO @@ -42,6 +42,7 @@ BIG ONES: * Specially encoded memory-saving integer sets. * A command to export a JSON dump (there should be mostly working patch needing major reworking). * Specially encoded sets of integers (this includes a big refactoring providing an higher level layer for Sets manipulation) +* ZRANK: http://docs.google.com/viewer?a=v&q=cache:tCQaP3ZeN4YJ:courses.csail.mit.edu/6.046/spring04/handouts/ps5-sol.pdf+skip+list+rank+operation+augmented&hl=en&pid=bl&srcid=ADGEEShXuNjTcZyXw_1cq9OaWpSXy3PprjXqVzmM-LE0ETFznLyrDXJKQ_mBPNT10R8ErkoiXD9JbMw_FaoHmOA4yoGVrA7tZWiy393JwfCwuewuP93sjbkzZ_gnEp83jYhPYjThaIzw&sig=AHIEtbRF0GkYCdYRFtTJBE69senXZwFY0w SMALL ONES: diff --git a/redis.c b/redis.c index 07287605..bfdc696c 100644 --- a/redis.c +++ b/redis.c @@ -27,7 +27,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#define REDIS_VERSION "1.1.94" +#define REDIS_VERSION "1.1.95" #include "fmacros.h" #include "config.h" @@ -3018,24 +3018,31 @@ static void setnxCommand(redisClient *c) { setGenericCommand(c,1); } -static void getCommand(redisClient *c) { +static int getGenericCommand(redisClient *c) { robj *o = lookupKeyRead(c->db,c->argv[1]); if (o == NULL) { addReply(c,shared.nullbulk); + return REDIS_OK; } else { if (o->type != REDIS_STRING) { addReply(c,shared.wrongtypeerr); + return REDIS_ERR; } else { addReplyBulkLen(c,o); addReply(c,o); addReply(c,shared.crlf); + return REDIS_OK; } } } +static void getCommand(redisClient *c) { + getGenericCommand(c); +} + static void getsetCommand(redisClient *c) { - getCommand(c); + if (getGenericCommand(c) == REDIS_ERR) return; if (dictAdd(c->db->dict,c->argv[1],c->argv[2]) == DICT_ERR) { dictReplace(c->db->dict,c->argv[1],c->argv[2]); } else {