summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2014-04-24 23:59:32 -0700
committerStanislav Malyshev <stas@php.net>2014-04-24 23:59:32 -0700
commitf6841d250af9398ee549508a004dc74c62cf73e7 (patch)
tree09784e86064f947c4e677645175632efdaaec28d
parentdb960e82b406a9dc5ce325b8a8e8ab72088ae788 (diff)
parent03c703b8bd55679edf30fe17529fab0c2281b01f (diff)
downloadphp-git-f6841d250af9398ee549508a004dc74c62cf73e7.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: add a test case previously broken by a bad fix Revert "Fixed bug #64604"
-rw-r--r--ext/standard/tests/url/bug64604.phpt40
-rw-r--r--ext/standard/tests/url/parse_url_basic_001.phpt7
-rw-r--r--ext/standard/tests/url/parse_url_basic_002.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_003.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_004.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_005.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_006.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_007.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_008.phpt1
-rw-r--r--ext/standard/tests/url/parse_url_basic_009.phpt1
-rw-r--r--ext/standard/tests/url/urls.inc1
-rw-r--r--ext/standard/url.c8
12 files changed, 20 insertions, 44 deletions
diff --git a/ext/standard/tests/url/bug64604.phpt b/ext/standard/tests/url/bug64604.phpt
deleted file mode 100644
index bbc3cb9d1b..0000000000
--- a/ext/standard/tests/url/bug64604.phpt
+++ /dev/null
@@ -1,40 +0,0 @@
---TEST--
-Bug #64604 parse_url is inconsistent with specified port
---FILE--
-<?php
-var_dump(parse_url('//localhost/path'));
-var_dump(parse_url('//localhost:80/path'));
-var_dump(parse_url('//localhost:/path'));
-var_dump(parse_url('http://localhost:80/path'));
-?>
---EXPECT--
-array(2) {
- ["host"]=>
- string(9) "localhost"
- ["path"]=>
- string(5) "/path"
-}
-array(3) {
- ["host"]=>
- string(9) "localhost"
- ["port"]=>
- int(80)
- ["path"]=>
- string(5) "/path"
-}
-array(2) {
- ["host"]=>
- string(9) "localhost"
- ["path"]=>
- string(5) "/path"
-}
-array(4) {
- ["scheme"]=>
- string(4) "http"
- ["host"]=>
- string(9) "localhost"
- ["port"]=>
- int(80)
- ["path"]=>
- string(5) "/path"
-}
diff --git a/ext/standard/tests/url/parse_url_basic_001.phpt b/ext/standard/tests/url/parse_url_basic_001.phpt
index 4c5b0944c6..a6f4f7a252 100644
--- a/ext/standard/tests/url/parse_url_basic_001.phpt
+++ b/ext/standard/tests/url/parse_url_basic_001.phpt
@@ -845,6 +845,13 @@ echo "Done";
string(1) "/"
}
+--> /rest/Users?filter={"id":"123"}: array(2) {
+ ["path"]=>
+ string(11) "/rest/Users"
+ ["query"]=>
+ string(19) "filter={"id":"123"}"
+}
+
--> http:///blah.com: bool(false)
--> http://:80: bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_002.phpt b/ext/standard/tests/url/parse_url_basic_002.phpt
index ed0f08a84f..c05d1f487a 100644
--- a/ext/standard/tests/url/parse_url_basic_002.phpt
+++ b/ext/standard/tests/url/parse_url_basic_002.phpt
@@ -110,6 +110,7 @@ echo "Done";
--> http://[x:80]/ : string(4) "http"
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_003.phpt b/ext/standard/tests/url/parse_url_basic_003.phpt
index a2bbfa6482..88eda504d5 100644
--- a/ext/standard/tests/url/parse_url_basic_003.phpt
+++ b/ext/standard/tests/url/parse_url_basic_003.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : string(6) "[x:80]"
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_004.phpt b/ext/standard/tests/url/parse_url_basic_004.phpt
index 839ebee554..e3b9abd91c 100644
--- a/ext/standard/tests/url/parse_url_basic_004.phpt
+++ b/ext/standard/tests/url/parse_url_basic_004.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : NULL
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_005.phpt b/ext/standard/tests/url/parse_url_basic_005.phpt
index c113461fe7..1fc946e5b3 100644
--- a/ext/standard/tests/url/parse_url_basic_005.phpt
+++ b/ext/standard/tests/url/parse_url_basic_005.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : NULL
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_006.phpt b/ext/standard/tests/url/parse_url_basic_006.phpt
index 24de1cc233..5104326198 100644
--- a/ext/standard/tests/url/parse_url_basic_006.phpt
+++ b/ext/standard/tests/url/parse_url_basic_006.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : NULL
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_007.phpt b/ext/standard/tests/url/parse_url_basic_007.phpt
index d4006879f4..8e04553983 100644
--- a/ext/standard/tests/url/parse_url_basic_007.phpt
+++ b/ext/standard/tests/url/parse_url_basic_007.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : string(1) "/"
--> : string(0) ""
--> / : string(1) "/"
+--> /rest/Users?filter={"id":"123"} : string(11) "/rest/Users"
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_008.phpt b/ext/standard/tests/url/parse_url_basic_008.phpt
index b283829c46..0c77221465 100644
--- a/ext/standard/tests/url/parse_url_basic_008.phpt
+++ b/ext/standard/tests/url/parse_url_basic_008.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : NULL
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : string(19) "filter={"id":"123"}"
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/parse_url_basic_009.phpt b/ext/standard/tests/url/parse_url_basic_009.phpt
index a7d70f34da..487b271149 100644
--- a/ext/standard/tests/url/parse_url_basic_009.phpt
+++ b/ext/standard/tests/url/parse_url_basic_009.phpt
@@ -109,6 +109,7 @@ echo "Done";
--> http://[x:80]/ : NULL
--> : NULL
--> / : NULL
+--> /rest/Users?filter={"id":"123"} : NULL
--> http:///blah.com : bool(false)
--> http://:80 : bool(false)
--> http://user@:80 : bool(false)
diff --git a/ext/standard/tests/url/urls.inc b/ext/standard/tests/url/urls.inc
index 4192f4a869..d8ffe91378 100644
--- a/ext/standard/tests/url/urls.inc
+++ b/ext/standard/tests/url/urls.inc
@@ -89,6 +89,7 @@ $urls = array(
'http://[x:80]/',
'',
'/',
+'/rest/Users?filter={"id":"123"}',
// Severely malformed URLs that do not parse:
'http:///blah.com',
diff --git a/ext/standard/url.c b/ext/standard/url.c
index 16237e6599..d8271a18ed 100644
--- a/ext/standard/url.c
+++ b/ext/standard/url.c
@@ -181,10 +181,6 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
p = e + 1;
pp = p;
- if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */
- s += 2;
- }
-
while (pp-p < 6 && isdigit(*pp)) {
pp++;
}
@@ -205,6 +201,10 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
STR_FREE(ret->scheme);
efree(ret);
return NULL;
+ } else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */
+ s += 2;
+ } else {
+ goto just_path;
}
} else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */
s += 2;