summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-12-11 15:16:07 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-12-11 15:16:07 +0000
commit7e1973d9fc1924ecc5ab9050712ff3f3b3437f0f (patch)
tree1f931df03284effe3d83af796b9bff5b1065a056 /Zend/zend_operators.c
parentd3aa69526309f444760bb03370e59afb7ed2c390 (diff)
downloadphp-git-7e1973d9fc1924ecc5ab9050712ff3f3b3437f0f.tar.gz
Minor optimization (2-3%) from Brian Shire
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index d8853ebb7a..a51b33b5c7 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -304,13 +304,13 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC)
} \
}
-
ZEND_API void convert_to_long(zval *op)
{
- convert_to_long_base(op, 10);
+ if ((op)->type != IS_BOOL && (op)->type != IS_LONG) {
+ convert_to_long_base(op, 10);
+ }
}
-
ZEND_API void convert_to_long_base(zval *op, int base)
{
char *strval;
@@ -1175,11 +1175,14 @@ ZEND_API int add_string_to_string(zval *result, zval *op1, zval *op2)
ZEND_API int concat_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
{
zval op1_copy, op2_copy;
- int use_copy1, use_copy2;
-
+ int use_copy1 = 0, use_copy2 = 0;
- zend_make_printable_zval(op1, &op1_copy, &use_copy1);
- zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+ if (op1->type != IS_STRING) {
+ zend_make_printable_zval(op1, &op1_copy, &use_copy1);
+ }
+ if (op2->type != IS_STRING) {
+ zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+ }
if (use_copy1) {
/* We have created a converted copy of op1. Therefore, op1 won't become the result so