@@ -586,7 +586,6 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...)
586
586
va_list ap ;
587
587
smart_string buf = {0 };
588
588
int l = strlen (keyword );
589
- zend_string * dbl_str ;
590
589
591
590
va_start (ap , format );
592
591
@@ -615,11 +614,11 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...)
615
614
case 'f' :
616
615
case 'F' : {
617
616
double d = va_arg (ap , double );
618
- REDIS_DOUBLE_TO_STRING (dbl_str , d );
619
- smart_string_append_long (& buf , dbl_str -> len );
617
+ char tmp [64 ];
618
+ int len = snprintf (tmp , sizeof (tmp ), "%.16g" , d );
619
+ smart_string_append_long (& buf , len );
620
620
smart_string_appendl (& buf , _NL , sizeof (_NL ) - 1 );
621
- smart_string_appendl (& buf , dbl_str -> val , dbl_str -> len );
622
- zend_string_release (dbl_str );
621
+ smart_string_appendl (& buf , tmp , len );
623
622
}
624
623
break ;
625
624
@@ -666,7 +665,6 @@ redis_cmd_format(char **ret, char *format, ...) {
666
665
smart_string buf = {0 };
667
666
va_list ap ;
668
667
char * p = format ;
669
- zend_string * dbl_str ;
670
668
671
669
va_start (ap , format );
672
670
@@ -683,11 +681,11 @@ redis_cmd_format(char **ret, char *format, ...) {
683
681
case 'F' :
684
682
case 'f' : {
685
683
double d = va_arg (ap , double );
686
- REDIS_DOUBLE_TO_STRING (dbl_str , d );
687
- smart_string_append_long (& buf , dbl_str -> len );
684
+ char tmp [64 ];
685
+ int len = snprintf (tmp , sizeof (tmp ), "%.16g" , d );
686
+ smart_string_append_long (& buf , len );
688
687
smart_string_appendl (& buf , _NL , sizeof (_NL ) - 1 );
689
- smart_string_appendl (& buf , dbl_str -> val , dbl_str -> len );
690
- zend_string_release (dbl_str );
688
+ smart_string_appendl (& buf , tmp , len );
691
689
}
692
690
break ;
693
691
@@ -792,18 +790,17 @@ int redis_cmd_append_sstr_long(smart_string *str, long append) {
792
790
/*
793
791
* Append a double to a smart string command
794
792
*/
795
- int redis_cmd_append_sstr_dbl (smart_string * str , double value ) {
796
- zend_string * dbl_str ;
797
- int retval ;
793
+ int
794
+ redis_cmd_append_sstr_dbl (smart_string * str , double value )
795
+ {
796
+ char tmp [64 ];
797
+ int len , retval ;
798
798
799
- /* Convert to double */
800
- REDIS_DOUBLE_TO_STRING ( dbl_str , value );
799
+ /* Convert to string */
800
+ len = snprintf ( tmp , sizeof ( tmp ), "%.16g" , value );
801
801
802
802
// Append the string
803
- retval = redis_cmd_append_sstr (str , dbl_str -> val , dbl_str -> len );
804
-
805
- /* Free our double string */
806
- zend_string_release (dbl_str );
803
+ retval = redis_cmd_append_sstr (str , tmp , len );
807
804
808
805
/* Return new length */
809
806
return retval ;
0 commit comments