diff --git a/src/Composer/Package/Package.php b/src/Composer/Package/Package.php index a57ea6c6e..cb985d2f4 100644 --- a/src/Composer/Package/Package.php +++ b/src/Composer/Package/Package.php @@ -118,7 +118,7 @@ class Package extends BasePackage return; } - return ltrim(preg_replace('{ (?:^|[\\\\/]) \.\.? (?:[\\\\/]|$) (?:\.\.? (?:[\\\\/]|$) )*}x', '/', $this->targetDir), '/'); + return ltrim(preg_replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); } /** diff --git a/tests/Composer/Test/Package/CompletePackageTest.php b/tests/Composer/Test/Package/CompletePackageTest.php index f6faf505b..b6f90928c 100644 --- a/tests/Composer/Test/Package/CompletePackageTest.php +++ b/tests/Composer/Test/Package/CompletePackageTest.php @@ -94,5 +94,8 @@ class CompletePackageTest extends TestCase $package->setTargetDir('/foo/..'); $this->assertEquals('foo/', $package->getTargetDir()); + + $package->setTargetDir('/foo/..//bar'); + $this->assertEquals('foo/bar', $package->getTargetDir()); } }