diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-12-21 08:31:42 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-12-21 08:31:42 (GMT) |
commit | cf7a6fee7af112ca3d6e4c511417b9e42cfc6716 (patch) | |
tree | c73d207c08d75d15d08c66a93cd37ae105eda8a6 /src/declarative/qml | |
parent | 0a4ab50b6ed19a2d3fbe7b1f9d9614ad5d9b339e (diff) | |
download | Qt-cf7a6fee7af112ca3d6e4c511417b9e42cfc6716.zip Qt-cf7a6fee7af112ca3d6e4c511417b9e42cfc6716.tar.gz Qt-cf7a6fee7af112ca3d6e4c511417b9e42cfc6716.tar.bz2 |
Empty URLs should not be resolved
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qmlbindingvme.cpp | 11 | ||||
-rw-r--r-- | src/declarative/qml/qmlbindingvme_p.h | 2 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/declarative/qml/qmlbindingvme.cpp b/src/declarative/qml/qmlbindingvme.cpp index 043cbb3..2e3dcca 100644 --- a/src/declarative/qml/qmlbindingvme.cpp +++ b/src/declarative/qml/qmlbindingvme.cpp @@ -237,6 +237,8 @@ struct Program { quint32 signalTableOffset; quint16 subscriptions; quint16 identifiers; + quint16 instructionCount; + quint16 dummy; const char *data() const { return ((const char *)this) + sizeof(Program); } const Instr *instructions() const { return (const Instr *)(data() + dataLength); } @@ -588,7 +590,7 @@ inline static QUrl toUrl(Register *reg, int type, QmlContextPrivate *context, bo return QUrl(); } - if (base.isRelative()) + if (!base.isEmpty() && base.isRelative()) return context->url.resolved(base); else return base; @@ -881,16 +883,16 @@ void QmlBindingVME::run(const char *programData, int instrIndex, } } -void QmlBindingVME::dump(const QByteArray &programData) +void QmlBindingVME::dump(const char *programData) { - const Program *program = (const Program *)programData.constData(); + const Program *program = (const Program *)programData; qWarning() << "Program.bindings:" << program->bindings; qWarning() << "Program.dataLength:" << program->dataLength; qWarning() << "Program.subscriptions:" << program->subscriptions; qWarning() << "Program.indentifiers:" << program->identifiers; - int count = (programData.size() - sizeof(Program) - program->dataLength) / sizeof(Instr); + int count = program->instructionCount; const Instr *instr = program->instructions(); while (count--) { @@ -2147,6 +2149,7 @@ QByteArray QmlBindingCompiler::program() const prog.dataLength = 4 * ((data.size() + 3) / 4); prog.subscriptions = d->committed.subscriptionIds.count(); prog.identifiers = d->committed.registeredStrings.count(); + prog.instructionCount = bytecode.count(); int size = sizeof(Program) + bytecode.count() * sizeof(Instr); size += prog.dataLength; diff --git a/src/declarative/qml/qmlbindingvme_p.h b/src/declarative/qml/qmlbindingvme_p.h index de73037..ceaf2b3 100644 --- a/src/declarative/qml/qmlbindingvme_p.h +++ b/src/declarative/qml/qmlbindingvme_p.h @@ -85,7 +85,7 @@ public: static void run(const char *program, int instr, Config *config, QmlContextPrivate *context, QObject **scopes, QObject **outputs); - static void dump(const QByteArray &); + static void dump(const char *); }; class QmlBindingCompilerPrivate; |