summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/html.c2
-rw-r--r--ext/standard/tests/strings/htmlentities18.phpt13
2 files changed, 12 insertions, 3 deletions
diff --git a/ext/standard/html.c b/ext/standard/html.c
index a5f5292c33..5b102f3d82 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -1154,7 +1154,7 @@ encode_amp:
len += sizeof("&") - 1;
} else {
char *e = memchr(old + i, ';', oldlen - i);
- char *s = old + i + 1;
+ char *s = old + i;
if (!e || (e - s) > 10) { /* minor optimization to avoid "entities" over 10 chars in length */
goto encode_amp;
diff --git a/ext/standard/tests/strings/htmlentities18.phpt b/ext/standard/tests/strings/htmlentities18.phpt
index f171adaca2..ab3df05da8 100644
--- a/ext/standard/tests/strings/htmlentities18.phpt
+++ b/ext/standard/tests/strings/htmlentities18.phpt
@@ -9,6 +9,9 @@ $tests = array(
"&; &amp &#a; &9;",
"&kffjadfdhsjfhjasdhffasdfas;",
"&#8787978789",
+ "&",
+ "&&&",
+ "&ab&&",
);
foreach ($tests as $test) {
@@ -23,9 +26,15 @@ string(13) "abc&sfdsa"
string(13) "abc&sfdsa"
string(33) "test+s & some more D"
string(33) "test+s & some more D"
-string(20) "&; &amp &#a; &9;"
-string(20) "&; &amp &#a; &9;"
+string(24) "&; &amp &#a; &9;"
+string(24) "&; &amp &#a; &9;"
string(32) "&kffjadfdhsjfhjasdhffasdfas;"
string(32) "&kffjadfdhsjfhjasdhffasdfas;"
string(16) "&#8787978789"
string(16) "&#8787978789"
+string(5) "&"
+string(5) "&"
+string(15) "&&&"
+string(15) "&&&"
+string(17) "&ab&&"
+string(17) "&ab&&"