cvs: ZendEngine2(PHP_5_0) / zend_operators.c
| From: | Marcus Boerger | Date: | Fri, 08 Apr 2005 14:36:39 +0000 |
| Subject: | cvs: ZendEngine2(PHP_5_0) / zend_operators.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-3551@lists.php.net to get a copy of this message | ||
helly Fri Apr 8 10:36:39 2005 EDT
Modified files: (Branch: PHP_5_0)
/ZendEngine2 zend_operators.c
Log:
- MFH Fix memory corruption
http://cvs.php.net/diff.php/ZendEngine2/zend_operators.c?r1=1.193.2.8&r2=1.193.2.9&ty=u
Index: ZendEngine2/zend_operators.c
diff -u ZendEngine2/zend_operators.c:1.193.2.8 ZendEngine2/zend_operators.c:1.193.2.9
--- ZendEngine2/zend_operators.c:1.193.2.8 Mon Nov 29 04:39:57 2004
+++ ZendEngine2/zend_operators.c Fri Apr 8 10:36:39 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_operators.c,v 1.193.2.8 2004/11/29 09:39:57 derick Exp $ */
+/* $Id: zend_operators.c,v 1.193.2.9 2005/04/08 14:36:39 helly Exp $ */
#include <ctype.h>
@@ -1284,24 +1284,26 @@
}
#define COMPARE_RETURN_AND_FREE(retval) \
- zend_free_obj_get_result(op1, free_op1); \
- zend_free_obj_get_result(op2, free_op2); \
+ zend_free_obj_get_result(op1_orig, free_op1); \
+ zend_free_obj_get_result(op2_orig, free_op2); \
return retval;
ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
{
zval op1_copy, op2_copy;
zend_bool free_op1 = 0, free_op2 = 0;
+ zval *op1_orig, *op2_orig;
if (op1->type == IS_OBJECT && Z_OBJ_HT_P(op1)->get) {
op1 = Z_OBJ_HT_P(op1)->get(op1 TSRMLS_CC);
free_op1 = 1;
}
+ op1_orig = op1;
if (op2->type == IS_OBJECT && Z_OBJ_HT_P(op2)->get) {
op2 = Z_OBJ_HT_P(op2)->get(op2 TSRMLS_CC);
free_op2 = 1;
}
-
+ op2_orig = op2;
if ((op1->type == IS_NULL && op2->type == IS_STRING)
|| (op2->type == IS_NULL && op1->type == IS_STRING)) {