History

Fix ScriptEngine not properly resolving paths

Ryan Huffman committed 10 years ago

Commit 667a7371 parent 32db63e1 file · +11 −5Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+11−5
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525 #include <QtNetwork/QNetworkRequest>
2626 #include <QtNetwork/QNetworkReply>
2727
28+#include <QtScript/QScriptContextInfo>
2829 #include <QtScript/QScriptValue>
2930 #include <QtScript/QScriptValueIterator>
3031
@@ -1091,14 +1092,19 @@ QUrl ScriptEngine::resolvePath(const QString& include) const { · 1060 unmodified lines
10911092 return expandScriptUrl(url);
10921093 }
10931094
1095+ QScriptContextInfo contextInfo { currentContext()->parentContext() };
1096+
10941097 // we apparently weren't a fully qualified url, so, let's assume we're relative
10951098 // to the original URL of our script
1096− QUrl parentURL;
1097− if (_parentURL.isEmpty()) {
1098− parentURL = QUrl(_fileNameString);
1099− } else {
1100− parentURL = QUrl(_parentURL);
1099+ QUrl parentURL = contextInfo.fileName();
1100+ if (parentURL.isEmpty()) {
1101+ if (_parentURL.isEmpty()) {
1102+ parentURL = QUrl(_fileNameString);
1103+ } else {
1104+ parentURL = QUrl(_parentURL);
1105+ }
11011106 }
1107+
11021108 // if the parent URL's scheme is empty, then this is probably a local file...
11031109 if (parentURL.scheme().isEmpty()) {
11041110 parentURL = QUrl::fromLocalFile(_fileNameString);