diff --git a/lib/Cake/Routing/Router.php b/lib/Cake/Routing/Router.php index 081a44812..7015ece0a 100644 --- a/lib/Cake/Routing/Router.php +++ b/lib/Cake/Routing/Router.php @@ -964,7 +964,7 @@ class Router { } $addition = http_build_query($q, null, $join); - if ($out && $addition) { + if ($out && $addition && substr($out, strlen($join) * -1, strlen($join)) != $join) { $out .= $join; } diff --git a/lib/Cake/Test/Case/Routing/RouterTest.php b/lib/Cake/Test/Case/Routing/RouterTest.php index 6d75fc831..67bcea886 100644 --- a/lib/Cake/Test/Case/Routing/RouterTest.php +++ b/lib/Cake/Test/Case/Routing/RouterTest.php @@ -2626,5 +2626,13 @@ class RouterTest extends CakeTestCase { $result = Router::queryString('foo=bar', array('php' => 'nut', 'jose' => 'zap'), true); $expected = '?foo=bar&php=nut&jose=zap'; $this->assertEquals($expected, $result); + + $result = Router::queryString('foo=bar&', array('php' => 'nut', 'jose' => 'zap'), true); + $expected = '?foo=bar&php=nut&jose=zap'; + $this->assertEquals($expected, $result); + + $result = Router::queryString('foo=bar&', array('php' => 'nut', 'jose' => 'zap')); + $expected = '?foo=bar&php=nut&jose=zap'; + $this->assertEquals($expected, $result); } }