The next task for us is to modify our script editor so that it cleans up after the execution of each script. As was said, each script is executed in the current context of the engine, so the task of solving the problem boils down to making sure that each script executes in a separate context. Incorporate the following code in the run()
method:
void MainWindow::run() { ui->logWindow->clear(); QString scriptSourceCode = ui->codeEditor->toPlainText(); m_engine.pushContext(); QScriptValue result = m_engine.evaluate (scriptSourceCode, windowFilePath()); if(m_engine.hasUncaughtException()) { // … } m_engine.popContext(); }
Run the program and repeat the last test to see that fun
no longer persists across executions.