Mercurial > hg > cmmr2012-drupal-site
diff vendor/psy/psysh/src/ExecutionLoopClosure.php @ 4:a9cd425dd02b
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:11:55 +0000 |
parents | c75dbcec494b |
children |
line wrap: on
line diff
--- a/vendor/psy/psysh/src/ExecutionLoopClosure.php Thu Feb 28 11:14:44 2019 +0000 +++ b/vendor/psy/psysh/src/ExecutionLoopClosure.php Thu Feb 28 13:11:55 2019 +0000 @@ -31,7 +31,7 @@ { $this->setClosure($__psysh__, function () use ($__psysh__) { // Restore execution scope variables - extract($__psysh__->getScopeVariables(false)); + \extract($__psysh__->getScopeVariables(false)); do { $__psysh__->beforeLoop(); @@ -40,40 +40,45 @@ $__psysh__->getInput(); try { + // Pull in any new execution scope variables + if ($__psysh__->getLastExecSuccess()) { + \extract($__psysh__->getScopeVariablesDiff(\get_defined_vars())); + } + // Buffer stdout; we'll need it later - ob_start([$__psysh__, 'writeStdout'], 1); + \ob_start([$__psysh__, 'writeStdout'], 1); // Convert all errors to exceptions - set_error_handler([$__psysh__, 'handleError']); + \set_error_handler([$__psysh__, 'handleError']); // Evaluate the current code buffer $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: ExecutionClosure::NOOP_INPUT)); } catch (\Throwable $_e) { // Clean up on our way out. - restore_error_handler(); - if (ob_get_level() > 0) { - ob_end_clean(); + \restore_error_handler(); + if (\ob_get_level() > 0) { + \ob_end_clean(); } throw $_e; } catch (\Exception $_e) { // Clean up on our way out. - restore_error_handler(); - if (ob_get_level() > 0) { - ob_end_clean(); + \restore_error_handler(); + if (\ob_get_level() > 0) { + \ob_end_clean(); } throw $_e; } // Won't be needing this anymore - restore_error_handler(); + \restore_error_handler(); // Flush stdout (write to shell output, plus save to magic variable) - ob_end_flush(); + \ob_end_flush(); // Save execution scope variables for next time - $__psysh__->setScopeVariables(get_defined_vars()); + $__psysh__->setScopeVariables(\get_defined_vars()); $__psysh__->writeReturnValue($_); } catch (BreakException $_e) {