@@ -2611,7 +2611,7 @@ PHP_METHOD(Redis, sort) {
2611
2611
2612
2612
zval * object = getThis (), * z_array = NULL , * * z_cur ;
2613
2613
char * cmd , * old_cmd = NULL , * key ;
2614
- int cmd_len , elements = 2 , key_len ;
2614
+ int cmd_len , elements = 2 , key_len , key_free ;
2615
2615
int using_store = 0 ;
2616
2616
RedisSock * redis_sock ;
2617
2617
@@ -2625,8 +2625,9 @@ PHP_METHOD(Redis, sort) {
2625
2625
RETURN_FALSE ;
2626
2626
}
2627
2627
2628
- cmd_len = redis_cmd_format (& cmd , "$4" _NL "SORT" _NL "$%d" _NL "%s" _NL
2629
- , key_len , key , key_len );
2628
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
2629
+ cmd_len = redis_cmd_format (& cmd , "$4" _NL "SORT" _NL "$%d" _NL "%s" _NL , key_len , key , key_len );
2630
+ if (key_free ) efree (key );
2630
2631
2631
2632
if (z_array ) {
2632
2633
if ((zend_hash_find (Z_ARRVAL_P (z_array ), "by" , sizeof ("by" ), (void * * ) & z_cur ) == SUCCESS
@@ -2814,7 +2815,7 @@ PHPAPI void generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sort, int use_a
2814
2815
zval * object ;
2815
2816
RedisSock * redis_sock ;
2816
2817
char * key = NULL , * pattern = NULL , * get = NULL , * store = NULL , * cmd ;
2817
- int key_len , pattern_len = -1 , get_len = -1 , store_len = -1 , cmd_len ;
2818
+ int key_len , pattern_len = -1 , get_len = -1 , store_len = -1 , cmd_len , key_free ;
2818
2819
long sort_start = -1 , sort_count = -1 ;
2819
2820
2820
2821
int cmd_elements ;
@@ -2845,13 +2846,19 @@ PHPAPI void generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sort, int use_a
2845
2846
cmd_lines [2 ] = estrdup ("SORT" );
2846
2847
cmd_sizes [2 ] = 4 ;
2847
2848
2849
+ // Prefix our key if we need to
2850
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
2851
+
2848
2852
/* second line, key */
2849
2853
cmd_sizes [3 ] = redis_cmd_format (& cmd_lines [3 ], "$%d" , key_len );
2850
2854
cmd_lines [4 ] = emalloc (key_len + 1 );
2851
2855
memcpy (cmd_lines [4 ], key , key_len );
2852
2856
cmd_lines [4 ][key_len ] = 0 ;
2853
2857
cmd_sizes [4 ] = key_len ;
2854
2858
2859
+ // If we prefixed our key, free it
2860
+ if (key_free ) efree (key );
2861
+
2855
2862
cmd_elements = 5 ;
2856
2863
if (pattern && pattern_len ) {
2857
2864
/* BY */
0 commit comments