@@ -696,7 +696,8 @@ ra_move_zset(const char *key, int key_len, zval *z_from, zval *z_to TSRMLS_DC) {
696
696
char * val ;
697
697
int val_len , i ;
698
698
long idx ;
699
-
699
+ int type ;
700
+
700
701
/* run ZRANGE key 0 -1 WITHSCORES on source */
701
702
ZVAL_STRINGL (& z_fun_zrange , "ZRANGE" , 6 , 0 );
702
703
for (i = 0 ; i < 4 ; ++ i ) {
@@ -733,17 +734,24 @@ ra_move_zset(const char *key, int key_len, zval *z_from, zval *z_to TSRMLS_DC) {
733
734
continue ;
734
735
}
735
736
736
- zend_hash_get_current_key_ex (h_zset_vals , & val , & val_len , & idx , 0 , NULL );
737
-
738
737
/* add score */
739
738
convert_to_double (* z_score_pp );
740
739
MAKE_STD_ZVAL (z_zadd_args [i ]);
741
740
ZVAL_DOUBLE (z_zadd_args [i ], Z_DVAL_PP (z_score_pp ));
742
741
743
742
/* add value */
744
743
MAKE_STD_ZVAL (z_zadd_args [i + 1 ]);
745
- ZVAL_STRINGL (z_zadd_args [i + 1 ], val , val_len - 1 , 0 ); /* we have to remove 1 because it is an array key. */
746
-
744
+ switch (zend_hash_get_current_key_ex (h_zset_vals , & val , & val_len , & idx , 0 , NULL )) {
745
+ case HASH_KEY_IS_STRING :
746
+ ZVAL_STRINGL (z_zadd_args [i + 1 ], val , val_len - 1 , 0 ); /* we have to remove 1 because it is an array key. */
747
+ break ;
748
+ case HASH_KEY_IS_LONG :
749
+ ZVAL_LONG (z_zadd_args [i + 1 ], idx );
750
+ break ;
751
+ default :
752
+ return -1 ; // Todo: log error
753
+ break ;
754
+ }
747
755
i += 2 ;
748
756
}
749
757
0 commit comments