summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/string.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 13a563ff36..37e8472595 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -937,8 +937,10 @@ PHP_FUNCTION(ucfirst)
if (!*(*arg)->value.str.val) {
RETURN_FALSE;
}
- *(*arg)->value.str.val = toupper((unsigned char)*(*arg)->value.str.val);
- RETVAL_STRING((*arg)->value.str.val,1);
+
+ *return_value=**arg;
+ zval_copy_ctor(return_value);
+ *return_value->value.str.val = toupper((unsigned char)*return_value->value.str.val);
}
/* }}} */
@@ -957,8 +959,11 @@ PHP_FUNCTION(ucwords)
if (!*(*arg)->value.str.val) {
RETURN_FALSE;
}
- *(*arg)->value.str.val = toupper((unsigned char)*(*arg)->value.str.val);
- r=(*arg)->value.str.val;
+ *return_value=**arg;
+ zval_copy_ctor(return_value);
+ *return_value->value.str.val = toupper((unsigned char)*return_value->value.str.val);
+
+ r=return_value->value.str.val;
while((r=strstr(r," "))){
if(*(r+1)){
r++;
@@ -967,7 +972,6 @@ PHP_FUNCTION(ucwords)
break;
}
}
- RETVAL_STRING((*arg)->value.str.val,1);
}
/* }}} */