Finalize implode() patch

This commit is contained in:
Ilia Alshanetsky 2006-08-29 14:32:16 +00:00
parent ffc3d4a076
commit 7c618c40bc

View file

@ -905,7 +905,7 @@ PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value TSRMLS_DC)
case IS_LONG: { case IS_LONG: {
char stmp[MAX_LENGTH_OF_LONG + 1]; char stmp[MAX_LENGTH_OF_LONG + 1];
str_len = sprintf(stmp, "%ld", Z_LVAL_PP(tmp)); str_len = snprintf(stmp, sizeof(stmp), "%ld", Z_LVAL_PP(tmp));
smart_str_appendl(&implstr, stmp, str_len); smart_str_appendl(&implstr, stmp, str_len);
} }
break; break;
@ -920,11 +920,10 @@ PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value TSRMLS_DC)
break; break;
case IS_DOUBLE: { case IS_DOUBLE: {
char *stmp; char *stmp = (char *) do_alloca(MAX_LENGTH_OF_DOUBLE + EG(precision) + 2); /* +1 for decimal point */
stmp = emalloc(MAX_LENGTH_OF_DOUBLE + EG(precision) + 1); str_len = snprintf(stmp, sizeof(stmp), "%.*G", (int) EG(precision), Z_DVAL_PP(tmp));
str_len = sprintf(stmp, "%.*G", (int) EG(precision), Z_DVAL_PP(tmp));
smart_str_appendl(&implstr, stmp, str_len); smart_str_appendl(&implstr, stmp, str_len);
efree(stmp); free_alloca(stmp);
} }
break; break;