aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4errorobject_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-06-13 16:04:39 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-07-22 13:49:20 +0200
commitda9d5016613d04f002c6433e2b3083143fec34cb (patch)
treedb73090d9a3c79c2cf777aecc35612faa9797194 /src/qml/jsruntime/qv4errorobject_p.h
parentb393c405b7568e80628bc99501a9c53bbd0e678d (diff)
Fix Managed::as<>() method
The as<> casting method was not doing the right thing in 100% of the cases. It only checked if the object in question was exactly of the type being asked for. It however didn't check if the object was derived from the type. This commit fixes this by adding a parent chain to the vtables, that is then being used to check this safely at runtime. Change-Id: I9e0b13adbda668aee8c7451e2bb71cd6d4e316d9 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4errorobject_p.h')
-rw-r--r--src/qml/jsruntime/qv4errorobject_p.h18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4errorobject_p.h b/src/qml/jsruntime/qv4errorobject_p.h
index 39d2e3c5c7..e3fe6895a4 100644
--- a/src/qml/jsruntime/qv4errorobject_p.h
+++ b/src/qml/jsruntime/qv4errorobject_p.h
@@ -77,7 +77,7 @@ struct ErrorObject: Object {
String *stack;
} __data;
- V4_OBJECT
+ V4_OBJECT(Object)
Q_MANAGED_TYPE(ErrorObject)
SyntaxErrorObject *asSyntaxError();
@@ -118,7 +118,7 @@ struct SyntaxErrorObject: ErrorObject {
Data(ExecutionEngine *engine, const ValueRef message);
Data(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber);
};
- V4_OBJECT
+ V4_OBJECT(ErrorObject)
};
struct TypeErrorObject: ErrorObject {
@@ -141,7 +141,7 @@ struct ErrorCtor: FunctionObject
Data(ExecutionContext *scope, const QString &name);
};
- V4_OBJECT
+ V4_OBJECT(FunctionObject)
static ReturnedValue construct(Managed *, CallData *callData);
static ReturnedValue call(Managed *that, CallData *callData);
@@ -152,7 +152,7 @@ struct EvalErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -162,7 +162,7 @@ struct RangeErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -172,7 +172,7 @@ struct ReferenceErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -182,7 +182,7 @@ struct SyntaxErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -192,7 +192,7 @@ struct TypeErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -202,7 +202,7 @@ struct URIErrorCtor: ErrorCtor
struct Data : ErrorCtor::Data {
Data(ExecutionContext *scope);
};
- V4_OBJECT
+ V4_OBJECT(ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};