prevent Script.include() from including the same file multiple times

This commit is contained in:
Brad Hefta-Gaub 2015-09-09 17:54:09 -07:00
parent e8fca7f6ae
commit ede0a39b5b
2 changed files with 9 additions and 1 deletions

View file

@ -860,7 +860,12 @@ void ScriptEngine::include(const QStringList& includeFiles, QScriptValue callbac
}
QList<QUrl> urls;
for (QString file : includeFiles) {
urls.append(resolvePath(file));
QUrl thisURL { resolvePath(file) };
if (!_includedURLs.contains(thisURL)) {
urls.append(thisURL);
} else {
qCDebug(scriptengine) << "Script.include() ignoring previously included url:" << thisURL;
}
}
BatchLoader* loader = new BatchLoader(urls);
@ -871,6 +876,7 @@ void ScriptEngine::include(const QStringList& includeFiles, QScriptValue callbac
if (contents.isNull()) {
qCDebug(scriptengine) << "Error loading file: " << url << "line:" << __LINE__;
} else {
_includedURLs << url;
QScriptValue result = evaluate(contents, url.toString());
}
}

View file

@ -16,6 +16,7 @@
#include <QtCore/QObject>
#include <QtCore/QUrl>
#include <QtCore/QSet>
#include <QtCore/QWaitCondition>
#include <QtScript/QScriptEngine>
@ -152,6 +153,7 @@ protected:
Sound* _avatarSound;
int _numAvatarSoundSentBytes;
bool _isAgent = false;
QSet<QUrl> _includedURLs;
private:
void stopAllTimers();