]> git.saurik.com Git - redis.git/blobdiff - redis.c
Redis 0.091 released
[redis.git] / redis.c
diff --git a/redis.c b/redis.c
index 00df17e671eef96473653ee0273d9af357e197ae..7308e2f21c91c13b8afe0d89bd1ed2ce96b475c2 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -27,7 +27,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define REDIS_VERSION "0.09"
+#define REDIS_VERSION "0.091"
 
 #include "fmacros.h"
 
 
 /* A redis object, that is a type able to hold a string / list / set */
 typedef struct redisObject {
-    int type;
     void *ptr;
+    int type;
     int refcount;
 } robj;
 
@@ -205,7 +205,7 @@ struct redisServer {
     int cronloops;              /* number of times the cron function run */
     list *objfreelist;          /* A list of freed objects to avoid malloc() */
     time_t lastsave;            /* Unix time of last save succeeede */
-    int usedmemory;             /* Used memory in megabytes */
+    size_t usedmemory;             /* Used memory in megabytes */
     /* Fields used only for stats */
     time_t stat_starttime;         /* server start time */
     long long stat_numcommands;    /* number of processed commands */
@@ -664,7 +664,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
 
     /* Show information about connected clients */
     if (!(loops % 5)) {
-        redisLog(REDIS_DEBUG,"%d clients connected (%d slaves), %d bytes in use",
+        redisLog(REDIS_DEBUG,"%d clients connected (%d slaves), %zu bytes in use",
             listLength(server.clients)-listLength(server.slaves),
             listLength(server.slaves),
             server.usedmemory,
@@ -2237,9 +2237,10 @@ static void randomkeyCommand(redisClient *c) {
    
     while(1) {
         de = dictGetRandomKey(c->db->dict);
-        if (expireIfNeeded(c->db,dictGetEntryKey(de)) == 0) break;
+        if (!de || expireIfNeeded(c->db,dictGetEntryKey(de)) == 0) break;
     }
     if (de == NULL) {
+        addReply(c,shared.plus);
         addReply(c,shared.crlf);
     } else {
         addReply(c,shared.plus);
@@ -2825,7 +2826,12 @@ static void sinterGenericCommand(redisClient *c, robj **setskeys, int setsnum, r
                     lookupKeyRead(c->db,setskeys[j]);
         if (!setobj) {
             zfree(dv);
-            addReply(c,shared.nokeyerr);
+            if (dstkey) {
+                deleteKey(c->db,dstkey);
+                addReply(c,shared.ok);
+            } else {
+                addReply(c,shared.nullmultibulk);
+            }
             return;
         }
         if (setobj->type != REDIS_SET) {
@@ -3201,7 +3207,7 @@ static void infoCommand(redisClient *c) {
         "redis_version:%s\r\n"
         "connected_clients:%d\r\n"
         "connected_slaves:%d\r\n"
-        "used_memory:%d\r\n"
+        "used_memory:%zu\r\n"
         "changes_since_last_save:%lld\r\n"
         "last_save_time:%d\r\n"
         "total_connections_received:%lld\r\n"