diff --git a/library.c b/library.c index 95ea25e722..778d72a212 100644 --- a/library.c +++ b/library.c @@ -556,18 +556,20 @@ void add_constant_long(zend_class_entry *ce, char *name, int value) { int integer_length(int i) { - int sz = 0; - int ci = abs(i); - while (ci > 0) { - ci /= 10; + int sz = 1; + + if (i < 0) { /* allow for neg sign as well. */ + i = -i; sz++; } - if (i == 0) { /* log 0 doesn't make sense. */ - sz = 1; - } else if (i < 0) { /* allow for neg sign as well. */ - sz++; + for (;;) { + if (i < 10) return sz; + if (i < 100) return sz + 1; + if (i < 1000) return sz + 2; + // Skip ahead by 4 orders of magnitude + i /= 10000U; + sz += 4; } - return sz; } int diff --git a/redis_array_impl.c b/redis_array_impl.c index 2b7564ac88..25017a29eb 100644 --- a/redis_array_impl.c +++ b/redis_array_impl.c @@ -425,17 +425,11 @@ ra_extract_key(RedisArray *ra, const char *key, int key_len, int *out_len TSRMLS char *start, *end; *out_len = key_len; - if(ra->z_fun) + if(ra->z_fun) { return ra_call_extractor(ra, key, key_len, out_len TSRMLS_CC); - - /* look for '{' */ - start = strchr(key, '{'); - if(!start) return estrndup(key, key_len); - - /* look for '}' */ - end = strchr(start + 1, '}'); - if(!end) return estrndup(key, key_len); - + } else if ((start = strchr(key, '{')) == NULL || (end = strchr(start + 1, '}')) == NULL) { + return estrndup(key, key_len); + } /* found substring */ *out_len = end - start - 1; return estrndup(start + 1, *out_len); @@ -768,17 +762,6 @@ ra_rehash_scan(zval *z_redis, char ***keys, int **key_lens, const char *cmd, con return count; } -static long -ra_rehash_scan_index(zval *z_redis, char ***keys, int **key_lens TSRMLS_DC) { - return ra_rehash_scan(z_redis, keys, key_lens, "SMEMBERS", PHPREDIS_INDEX_NAME TSRMLS_CC); -} - -/* list keys using KEYS command */ -static long -ra_rehash_scan_keys(zval *z_redis, char ***keys, int **key_lens TSRMLS_DC) { - return ra_rehash_scan(z_redis, keys, key_lens, "KEYS", "*" TSRMLS_CC); -} - /* run TYPE to find the type */ static zend_bool ra_get_key_type(zval *z_redis, const char *key, int key_len, zval *z_from, long *res TSRMLS_DC) { @@ -1254,9 +1237,9 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool /* list all keys */ if(b_index) { - count = ra_rehash_scan_index(z_redis, &keys, &key_lens TSRMLS_CC); + count = ra_rehash_scan(z_redis, &keys, &key_lens, "SMEMBERS", PHPREDIS_INDEX_NAME TSRMLS_CC); } else { - count = ra_rehash_scan_keys(z_redis, &keys, &key_lens TSRMLS_CC); + count = ra_rehash_scan(z_redis, &keys, &key_lens, "KEYS", "*" TSRMLS_CC); } /* callback */ @@ -1274,12 +1257,11 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool /* php_printf("move [%s] from [%s] to [%s]\n", keys[i], hostname, ra->hosts[target_pos]); */ ra_move_key(keys[i], key_lens[i], z_redis, z_target TSRMLS_CC); } - } - /* cleanup */ - for(i = 0; i < count; ++i) { + /* cleanup */ efree(keys[i]); } + efree(keys); efree(key_lens); } diff --git a/redis_commands.c b/redis_commands.c index 8fe71b0b76..5d72e1824b 100644 --- a/redis_commands.c +++ b/redis_commands.c @@ -3309,4 +3309,4 @@ void redis_unserialize_handler(INTERNAL_FUNCTION_PARAMETERS, } } -/* vim: set tabstop=4 softtabstops=4 noexpandtab shiftwidth=4: */ +/* vim: set tabstop=4 softtabstop=4 expandtab shiftwidth=4: */ diff --git a/redis_session.c b/redis_session.c index fc34b1c1ea..03d0766a5a 100644 --- a/redis_session.c +++ b/redis_session.c @@ -20,8 +20,6 @@ +----------------------------------------------------------------------+ */ -#include "common.h" - #ifdef HAVE_CONFIG_H #include "config.h" #endif