summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_ini_parser.y16
1 files changed, 12 insertions, 4 deletions
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y
index 00d57c5d1f..b224994214 100644
--- a/Zend/zend_ini_parser.y
+++ b/Zend/zend_ini_parser.y
@@ -57,11 +57,19 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2)
int str_len;
char str_result[MAX_LENGTH_OF_LONG+1];
- i_op1 = atoi(Z_STRVAL_P(op1));
- zend_string_free(Z_STR_P(op1));
+ if (IS_LONG == Z_TYPE_P(op1)) {
+ i_op1 = Z_LVAL_P(op1);
+ } else {
+ i_op1 = atoi(Z_STRVAL_P(op1));
+ zend_string_free(Z_STR_P(op1));
+ }
if (op2) {
- i_op2 = atoi(Z_STRVAL_P(op2));
- zend_string_free(Z_STR_P(op2));
+ if (IS_LONG == Z_TYPE_P(op2)) {
+ i_op2 = Z_LVAL_P(op2);
+ } else {
+ i_op2 = atoi(Z_STRVAL_P(op2));
+ zend_string_free(Z_STR_P(op2));
+ }
} else {
i_op2 = 0;
}