@@ -208,6 +208,8 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
208208 va_list ap ;
209209 smart_str buf = {0 };
210210 int l = strlen (keyword );
211+ char * dbl_str ;
212+ int dbl_len ;
211213
212214 va_start (ap , format );
213215
@@ -236,12 +238,13 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
236238
237239 case 'f' :
238240 case 'F' : {
239- char tmp [100 ];
240241 double d = va_arg (ap , double );
241- int tmp_len = snprintf (tmp , sizeof (tmp ), "%.8f" , d );
242- smart_str_append_long (& buf , tmp_len );
242+ dbl_str = _php_math_number_format (d , 8 , '.' , '\x00' );
243+ dbl_len = strlen (dbl_str );
244+ smart_str_append_long (& buf , dbl_len );
243245 smart_str_appendl (& buf , _NL , sizeof (_NL ) - 1 );
244- smart_str_appendl (& buf , tmp , tmp_len );
246+ smart_str_appendl (& buf , dbl_str , dbl_len );
247+ efree (dbl_str );
245248 }
246249 break ;
247250
@@ -277,6 +280,8 @@ redis_cmd_format(char **ret, char *format, ...) {
277280 smart_str buf = {0 };
278281 va_list ap ;
279282 char * p = format ;
283+ char * dbl_str ;
284+ int dbl_len ;
280285
281286 va_start (ap , format );
282287
@@ -292,10 +297,13 @@ redis_cmd_format(char **ret, char *format, ...) {
292297
293298 case 'F' :
294299 case 'f' : {
295- char tmp [100 ];
296300 double d = va_arg (ap , double );
297- int tmp_len = snprintf (tmp , sizeof (tmp ), "%.8f" , d );
298- smart_str_appendl (& buf , tmp , tmp_len );
301+ dbl_str = _php_math_number_format (d , 8 , '.' , '\x00' );
302+ dbl_len = strlen (dbl_str );
303+ smart_str_append_long (& buf , dbl_len );
304+ smart_str_appendl (& buf , _NL , sizeof (_NL ) - 1 );
305+ smart_str_appendl (& buf , dbl_str , dbl_len );
306+ efree (dbl_str );
299307 }
300308 break ;
301309
0 commit comments