diff options
author | Xinchen Hui <laruence@php.net> | 2015-02-28 22:37:46 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2015-02-28 22:37:46 +0800 |
commit | 54e2020ee3e6142a86db03f1a9d47bc763334dbb (patch) | |
tree | d69719b335b46c0de7b6946d071d22d8ac321e46 | |
parent | 49d19f6c7caafceefb0f0ac6f130fe0f99c80f38 (diff) | |
download | php-git-54e2020ee3e6142a86db03f1a9d47bc763334dbb.tar.gz |
Fixed bug #69144 (strtr not replacing with partly matching replace pairs)
-rw-r--r-- | ext/standard/string.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/strings/bug69144.phpt | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index b7e71283b9..b55abb7fea 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3140,7 +3140,7 @@ static void php_strtr_array(zval *return_value, zend_string *input, HashTable *p pos++; } } - if (result.s && result.s->len) { + if (result.s) { smart_str_appendl(&result, str + old_pos, slen - old_pos); smart_str_0(&result); RETVAL_STR(result.s); diff --git a/ext/standard/tests/strings/bug69144.phpt b/ext/standard/tests/strings/bug69144.phpt new file mode 100644 index 0000000000..ded915b4c0 --- /dev/null +++ b/ext/standard/tests/strings/bug69144.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #69144 (strtr not replacing with partly matching replace pairs) +--FILE-- +<?php +$tests = array('bar' => '', 'foo' => 'o', 'foobar' => '', 'hello' => 'hello'); + +foreach ($tests as $input => $expected) { + if ($expected !== ($actual = strtr($input, array("fo" => "", "foobar" => "", "bar" => "")))) { + echo "KO `$input` became `$actual` instead of `$expected`\n"; + } +} +echo "okey"; +?> +--EXPECT-- +okey |