]> git.saurik.com Git - redis.git/blobdiff - src/db.c
Merge pull request #544 from dvirsky/2.6
[redis.git] / src / db.c
index 3c75f6bad61d424e08318b359bee51c63746f1ba..e78b0d535bd15d13866802ae59a24567476e9a77 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -226,7 +226,11 @@ void existsCommand(redisClient *c) {
 }
 
 void selectCommand(redisClient *c) {
-    int id = atoi(c->argv[1]->ptr);
+    long id;
+
+    if (getLongFromObjectOrReply(c, c->argv[1], &id,
+        "invalid DB index") != REDIS_OK)
+        return;
 
     if (selectDb(c,id) == REDIS_ERR) {
         addReplyError(c,"invalid DB index");
@@ -255,7 +259,7 @@ void keysCommand(redisClient *c) {
     unsigned long numkeys = 0;
     void *replylen = addDeferredMultiBulkLength(c);
 
-    di = dictGetIterator(c->db->dict);
+    di = dictGetSafeIterator(c->db->dict);
     allkeys = (pattern[0] == '*' && pattern[1] == '\0');
     while((de = dictNext(di)) != NULL) {
         sds key = dictGetKey(de);