Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c8079ee

Browse files
committed
Remove REDIS_DOUBLE_TO_STRING macros
1 parent a44b7c6 commit c8079ee

File tree

2 files changed

+16
-43
lines changed

2 files changed

+16
-43
lines changed

library.c

+16-19
Original file line numberDiff line numberDiff line change
@@ -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;

library.h

-24
Original file line numberDiff line numberDiff line change
@@ -84,28 +84,4 @@ PHP_REDIS_API int redis_read_variant_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSo
8484

8585
PHP_REDIS_API void redis_client_list_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab);
8686

87-
#if (PHP_MAJOR_VERSION < 7)
88-
#if ZEND_MODULE_API_NO >= 20100000
89-
#define REDIS_DOUBLE_TO_STRING(dbl_str, dbl) do { \
90-
char dbl_decsep = '.'; \
91-
dbl_str = emalloc(sizeof(zend_string)); \
92-
dbl_str->val = _php_math_number_format_ex(dbl, 16, &dbl_decsep, 1, NULL, 0); \
93-
dbl_str->len = strlen(dbl_str->val); \
94-
dbl_str->gc = 0x11; \
95-
} while (0);
96-
#else
97-
#define REDIS_DOUBLE_TO_STRING(dbl_str, dbl) do { \
98-
dbl_str = emalloc(sizeof(zend_string)); \
99-
dbl_str->val = _php_math_number_format(dbl, 16, '.', '\x00'); \
100-
dbl_str->len = strlen(dbl_str->val); \
101-
dbl_str->gc = 0x11; \
102-
} while (0)
103-
#endif
104-
#else
105-
#define REDIS_DOUBLE_TO_STRING(dbl_str, dbl) do { \
106-
char dbl_decsep = '.'; \
107-
dbl_str = _php_math_number_format_ex(dbl, 16, &dbl_decsep, 1, NULL, 0); \
108-
} while (0);
109-
#endif
110-
11187
#endif

0 commit comments

Comments
 (0)