@@ -586,7 +586,6 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...)
586586 va_list ap ;
587587 smart_string buf = {0 };
588588 int l = strlen (keyword );
589- zend_string * dbl_str ;
590589
591590 va_start (ap , format );
592591
@@ -615,11 +614,11 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...)
615614 case 'f' :
616615 case 'F' : {
617616 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 );
620620 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 );
623622 }
624623 break ;
625624
@@ -666,7 +665,6 @@ redis_cmd_format(char **ret, char *format, ...) {
666665 smart_string buf = {0 };
667666 va_list ap ;
668667 char * p = format ;
669- zend_string * dbl_str ;
670668
671669 va_start (ap , format );
672670
@@ -683,11 +681,11 @@ redis_cmd_format(char **ret, char *format, ...) {
683681 case 'F' :
684682 case 'f' : {
685683 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 );
688687 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 );
691689 }
692690 break ;
693691
@@ -792,18 +790,17 @@ int redis_cmd_append_sstr_long(smart_string *str, long append) {
792790/*
793791 * Append a double to a smart string command
794792 */
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 ;
798798
799- /* Convert to double */
800- REDIS_DOUBLE_TO_STRING ( dbl_str , value );
799+ /* Convert to string */
800+ len = snprintf ( tmp , sizeof ( tmp ), "%.16g" , value );
801801
802802 // 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 );
807804
808805 /* Return new length */
809806 return retval ;
0 commit comments