Skip to content

Commit

Permalink
use helper for converting from double to string, use _ex version of _…
Browse files Browse the repository at this point in the history
…php_math_number_format_ex for PHP 5.4
  • Loading branch information
maxbeutel committed May 23, 2012
1 parent c1bc92b commit 72a041c
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
4 changes: 2 additions & 2 deletions library.c
Expand Up @@ -259,7 +259,7 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
case 'f': case 'f':
case 'F': { case 'F': {
double d = va_arg(ap, double); double d = va_arg(ap, double);
dbl_len = spprintf(&dbl_str, 0, "%.8f", d); REDIS_DOUBLE_TO_STRING(dbl_str, dbl_len, d)
smart_str_append_long(&buf, dbl_len); smart_str_append_long(&buf, dbl_len);
smart_str_appendl(&buf, _NL, sizeof(_NL) - 1); smart_str_appendl(&buf, _NL, sizeof(_NL) - 1);
smart_str_appendl(&buf, dbl_str, dbl_len); smart_str_appendl(&buf, dbl_str, dbl_len);
Expand Down Expand Up @@ -327,7 +327,7 @@ redis_cmd_format(char **ret, char *format, ...) {
case 'F': case 'F':
case 'f': { case 'f': {
double d = va_arg(ap, double); double d = va_arg(ap, double);
dbl_len = spprintf(&dbl_str, 0, "%.8f", d); REDIS_DOUBLE_TO_STRING(dbl_str, dbl_len, d)
smart_str_append_long(&buf, dbl_len); smart_str_append_long(&buf, dbl_len);
smart_str_appendl(&buf, _NL, sizeof(_NL) - 1); smart_str_appendl(&buf, _NL, sizeof(_NL) - 1);
smart_str_appendl(&buf, dbl_str, dbl_len); smart_str_appendl(&buf, dbl_str, dbl_len);
Expand Down
9 changes: 9 additions & 0 deletions library.h
Expand Up @@ -42,3 +42,12 @@ redis_key_prefix(RedisSock *redis_sock, char **key, int *key_len TSRMLS_DC);
PHPAPI int PHPAPI int
redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **return_value TSRMLS_DC); redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **return_value TSRMLS_DC);


#if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION >= 4)
# define REDIS_DOUBLE_TO_STRING(dbl_str, dbl_len, dbl) \
dbl_str = _php_math_number_format_ex(dbl, 8, (char*)'.', 0, NULL, 0); \
dbl_len = strlen(dbl_str);
#else
# define REDIS_DOUBLE_TO_STRING(dbl_str, dbl_len, dbl) \
dbl_str = _php_math_number_format(dbl, 8, '.', '\x00'); \
dbl_len = strlen(dbl_str);
#endif
2 changes: 1 addition & 1 deletion redis.c
Expand Up @@ -3662,7 +3662,7 @@ PHP_METHOD(Redis, zAdd) {


/* add score */ /* add score */
score = Z_DVAL_P(z_args[i]); score = Z_DVAL_P(z_args[i]);
dbl_len = spprintf(&dbl_str, 0, "%.8f", score); REDIS_DOUBLE_TO_STRING(dbl_str, dbl_len, score)
smart_str_appendc(&buf, '$'); smart_str_appendc(&buf, '$');
smart_str_append_long(&buf, dbl_len); smart_str_append_long(&buf, dbl_len);
smart_str_appendl(&buf, _NL, sizeof(_NL) - 1); smart_str_appendl(&buf, _NL, sizeof(_NL) - 1);
Expand Down

0 comments on commit 72a041c

Please sign in to comment.