diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php index 90332fe9f..b433b6fcc 100644 --- a/src/Composer/Console/Application.php +++ b/src/Composer/Console/Application.php @@ -229,11 +229,14 @@ class Application extends BaseApplication $io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MB), time: '.round(microtime(true) - $startTime, 2).'s'); } + restore_error_handler(); + return $result; } catch (ScriptExecutionException $e) { return $e->getCode(); } catch (\Exception $e) { $this->hintCommonErrors($e); + restore_error_handler(); throw $e; } } diff --git a/src/Composer/Repository/PlatformRepository.php b/src/Composer/Repository/PlatformRepository.php index d5e7e583c..f414ef409 100644 --- a/src/Composer/Repository/PlatformRepository.php +++ b/src/Composer/Repository/PlatformRepository.php @@ -94,19 +94,25 @@ class PlatformRepository extends ArrayRepository if (in_array($name, array('standard', 'Core'))) { continue; } + $extraDescription = null; $reflExt = new \ReflectionExtension($name); try { $prettyVersion = $reflExt->getVersion(); $version = $versionParser->normalize($prettyVersion); } catch (\UnexpectedValueException $e) { - $prettyVersion = '0'; + $extraDescription = ' (actual version: '.$prettyVersion.')'; + if (preg_match('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { + $prettyVersion = $match[1]; + } else { + $prettyVersion = '0'; + } $version = $versionParser->normalize($prettyVersion); } $packageName = $this->buildPackageName($name); $ext = new CompletePackage($packageName, $version, $prettyVersion); - $ext->setDescription('The '.$name.' PHP extension'); + $ext->setDescription('The '.$name.' PHP extension' . $extraDescription); $this->addPackage($ext); }