Index: zend_operators.c
===================================================================
RCS file: /repository/ZendEngine2/zend_operators.c,v
retrieving revision 1.208.2.4.2.15
diff -u -r1.208.2.4.2.15 zend_operators.c
--- zend_operators.c	11 Dec 2006 15:59:41 -0000	1.208.2.4.2.15
+++ zend_operators.c	13 Dec 2006 11:58:14 -0000
@@ -1151,7 +1151,7 @@
 {
 	result->value.str.len = op1->value.str.len + 1;
 	result->value.str.val = (char *) erealloc(op1->value.str.val, result->value.str.len+1);
-    result->value.str.val[result->value.str.len - 1] = (char) op2->value.lval;
+	result->value.str.val[result->value.str.len - 1] = (char) op2->value.lval;
 	result->value.str.val[result->value.str.len] = 0;
 	result->type = IS_STRING;
 	return SUCCESS;
@@ -1164,8 +1164,8 @@
 	int length = op1->value.str.len + op2->value.str.len;
 
 	result->value.str.val = (char *) erealloc(op1->value.str.val, length+1);
-    memcpy(result->value.str.val+op1->value.str.len, op2->value.str.val, op2->value.str.len);
-    result->value.str.val[length] = 0;
+	memcpy(result->value.str.val+op1->value.str.len, op2->value.str.val, op2->value.str.len);
+	result->value.str.val[length] = 0;
 	result->value.str.len = length;
 	result->type = IS_STRING;
 	return SUCCESS;
@@ -1225,10 +1225,14 @@
 ZEND_API int string_compare_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) {
 		op1 = &op1_copy;
@@ -1253,10 +1257,14 @@
 ZEND_API int string_locale_compare_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) {
 		op1 = &op1_copy;
Index: ext/standard/basic_functions.c
===================================================================
RCS file: /repository/php-src/ext/standard/basic_functions.c,v
retrieving revision 1.725.2.31.2.34
diff -u -r1.725.2.31.2.34 basic_functions.c
--- ext/standard/basic_functions.c	10 Dec 2006 01:23:41 -0000	1.725.2.31.2.34
+++ ext/standard/basic_functions.c	13 Dec 2006 12:27:59 -0000
@@ -4665,13 +4665,13 @@
 			}
 		} else {
 			/* other strings */
-			if(zend_hash_find(HASH_OF(return_value), optname, strlen(optname)+1, (void **)&args) != FAILURE) {
+			if(zend_hash_find(HASH_OF(return_value), optname, optname_len + 1, (void **)&args) != FAILURE) {
 				if(Z_TYPE_PP(args) != IS_ARRAY) {
 					convert_to_array_ex(args);
 				} 
 				zend_hash_next_index_insert(HASH_OF(*args),  (void *)&val, sizeof(zval *), NULL);
 			} else {
-				zend_hash_add(HASH_OF(return_value), optname, strlen(optname)+1, (void *)&val, sizeof(zval *), NULL);
+				zend_hash_add(HASH_OF(return_value), optname, optname_len + 1, (void *)&val, sizeof(zval *), NULL);
 			}
 		}
 	}
Index: ext/wddx/wddx.c
===================================================================
RCS file: /repository/php-src/ext/wddx/wddx.c,v
retrieving revision 1.119.2.10.2.6
diff -u -r1.119.2.10.2.6 wddx.c
--- ext/wddx/wddx.c	2 Aug 2006 22:03:47 -0000	1.119.2.10.2.6
+++ ext/wddx/wddx.c	13 Dec 2006 12:30:29 -0000
@@ -974,10 +974,11 @@
 						add_property_zval(ent2->data, ent1->varname, ent1->data);
 						EG(scope) = old_scope;
 					} else {
-						long l;  
+						long l;
 						double d;
+						int varname_len = strlen(ent1->varname);
 				
-						switch (is_numeric_string(ent1->varname, strlen(ent1->varname), &l, &d, 0)) {
+						switch (is_numeric_string(ent1->varname, varname_len, &l, &d, 0)) {
 							case IS_DOUBLE:
 								if (d > INT_MAX) {
 									goto bigint;
@@ -988,7 +989,7 @@
 								break;
 							default:
 bigint:
-								zend_hash_update(target_hash,ent1->varname, strlen(ent1->varname)+1, &ent1->data, sizeof(zval *), NULL);
+								zend_hash_update(target_hash,ent1->varname, varname_len + 1, &ent1->data, sizeof(zval *), NULL);
 						}
 					}
 					efree(ent1->varname);
