summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2012-01-31 10:35:52 +0100
committerantirez <antirez@gmail.com>2012-01-31 10:35:52 +0100
commit3c08fdae712e79cc7a678a2969c2ac15c5ff8865 (patch)
treea4d4866106e5dae53562227f291a592b97181c32 /src
parentfc4ed4299bfad004a3230bf6af0de89281bb2d44 (diff)
downloadredis-3c08fdae712e79cc7a678a2969c2ac15c5ff8865.tar.gz
64 bit instances are no longer limited to have at max 2^32-1 elements in lists.
Diffstat (limited to 'src')
-rw-r--r--src/adlist.c4
-rw-r--r--src/adlist.h4
-rw-r--r--src/redis.c6
-rw-r--r--src/redis.h2
-rw-r--r--src/t_list.c14
5 files changed, 12 insertions, 18 deletions
diff --git a/src/adlist.c b/src/adlist.c
index 015012f5c..51ba03bd5 100644
--- a/src/adlist.c
+++ b/src/adlist.c
@@ -57,7 +57,7 @@ list *listCreate(void)
* This function can't fail. */
void listRelease(list *list)
{
- unsigned int len;
+ unsigned long len;
listNode *current, *next;
current = list->head;
@@ -310,7 +310,7 @@ listNode *listSearchKey(list *list, void *key)
* and so on. Negative integers are used in order to count
* from the tail, -1 is the last element, -2 the penultimante
* and so on. If the index is out of range NULL is returned. */
-listNode *listIndex(list *list, int index) {
+listNode *listIndex(list *list, long index) {
listNode *n;
if (index < 0) {
diff --git a/src/adlist.h b/src/adlist.h
index a1209f62f..36dba1ff3 100644
--- a/src/adlist.h
+++ b/src/adlist.h
@@ -50,7 +50,7 @@ typedef struct list {
void *(*dup)(void *ptr);
void (*free)(void *ptr);
int (*match)(void *ptr, void *key);
- unsigned int len;
+ unsigned long len;
} list;
/* Functions implemented as macros */
@@ -81,7 +81,7 @@ listNode *listNext(listIter *iter);
void listReleaseIterator(listIter *iter);
list *listDup(list *orig);
listNode *listSearchKey(list *list, void *key);
-listNode *listIndex(list *list, int index);
+listNode *listIndex(list *list, long index);
void listRewind(list *list, listIter *li);
void listRewindTail(list *list, listIter *li);
diff --git a/src/redis.c b/src/redis.c
index ca49271df..e89a9c581 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -1465,7 +1465,7 @@ sds genRedisInfoString(char *section) {
if (sections++) info = sdscat(info,"\r\n");
info = sdscatprintf(info,
"# Clients\r\n"
- "connected_clients:%d\r\n"
+ "connected_clients:%lu\r\n"
"client_longest_output_list:%lu\r\n"
"client_biggest_input_buf:%lu\r\n"
"blocked_clients:%d\r\n",
@@ -1580,7 +1580,7 @@ sds genRedisInfoString(char *section) {
"keyspace_hits:%lld\r\n"
"keyspace_misses:%lld\r\n"
"pubsub_channels:%ld\r\n"
- "pubsub_patterns:%u\r\n"
+ "pubsub_patterns:%lu\r\n"
"latest_fork_usec:%lld\r\n",
server.stat_numconnections,
server.stat_numcommands,
@@ -1633,7 +1633,7 @@ sds genRedisInfoString(char *section) {
}
}
info = sdscatprintf(info,
- "connected_slaves:%d\r\n",
+ "connected_slaves:%lu\r\n",
listLength(server.slaves));
if (listLength(server.slaves)) {
int slaveid = 0;
diff --git a/src/redis.h b/src/redis.h
index def7881fb..615916fe7 100644
--- a/src/redis.h
+++ b/src/redis.h
@@ -823,7 +823,7 @@ void listTypeTryConversion(robj *subject, robj *value);
void listTypePush(robj *subject, robj *value, int where);
robj *listTypePop(robj *subject, int where);
unsigned long listTypeLength(robj *subject);
-listTypeIterator *listTypeInitIterator(robj *subject, int index, unsigned char direction);
+listTypeIterator *listTypeInitIterator(robj *subject, long index, unsigned char direction);
void listTypeReleaseIterator(listTypeIterator *li);
int listTypeNext(listTypeIterator *li, listTypeEntry *entry);
robj *listTypeGet(listTypeEntry *entry);
diff --git a/src/t_list.c b/src/t_list.c
index f856d6cde..3742ec49d 100644
--- a/src/t_list.c
+++ b/src/t_list.c
@@ -86,7 +86,7 @@ unsigned long listTypeLength(robj *subject) {
}
/* Initialize an iterator at the specified index. */
-listTypeIterator *listTypeInitIterator(robj *subject, int index, unsigned char direction) {
+listTypeIterator *listTypeInitIterator(robj *subject, long index, unsigned char direction) {
listTypeIterator *li = zmalloc(sizeof(listTypeIterator));
li->subject = subject;
li->encoding = subject->encoding;
@@ -484,10 +484,7 @@ void rpopCommand(redisClient *c) {
void lrangeCommand(redisClient *c) {
robj *o;
- long start;
- long end;
- int llen;
- int rangelen;
+ long start, end, llen, rangelen;
if ((getLongFromObjectOrReply(c, c->argv[2], &start, NULL) != REDIS_OK) ||
(getLongFromObjectOrReply(c, c->argv[3], &end, NULL) != REDIS_OK)) return;
@@ -546,10 +543,7 @@ void lrangeCommand(redisClient *c) {
void ltrimCommand(redisClient *c) {
robj *o;
- long start;
- long end;
- int llen;
- int j, ltrim, rtrim;
+ long start, end, llen, j, ltrim, rtrim;
list *list;
listNode *ln;
@@ -604,7 +598,7 @@ void lremCommand(redisClient *c) {
robj *subject, *obj;
obj = c->argv[3] = tryObjectEncoding(c->argv[3]);
long toremove;
- int removed = 0;
+ long removed = 0;
listTypeEntry entry;
if ((getLongFromObjectOrReply(c, c->argv[2], &toremove, NULL) != REDIS_OK))