forked from qt-creator/qt-creator
QmlJS: Fix crash
Fixes: QTCREATORBUG-24477 Change-Id: I45ab28fd11d8c9e51fb3b537a677620ecee5985b Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
This commit is contained in:
@@ -198,12 +198,15 @@ protected:
|
|||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int argCount = 0;
|
||||||
|
for (const ExpressionListAST *list = ast->expression_list; list && list->value;
|
||||||
|
list = list->next) {
|
||||||
|
++argCount;
|
||||||
|
}
|
||||||
|
|
||||||
// must have at least four arguments
|
// must have at least four arguments
|
||||||
if (!ast->expression_list
|
if (argCount < 4)
|
||||||
|| !ast->expression_list->value || !ast->expression_list->next
|
|
||||||
|| !ast->expression_list->next->value || !ast->expression_list->next->next
|
|
||||||
|| !ast->expression_list->next->next->value || !ast->expression_list->next->next->next
|
|
||||||
|| !ast->expression_list->next->next->next->value)
|
|
||||||
return false;
|
return false;
|
||||||
switch (registrationFunction) {
|
switch (registrationFunction) {
|
||||||
case InvalidRegistrationFunction:
|
case InvalidRegistrationFunction:
|
||||||
@@ -215,15 +218,11 @@ protected:
|
|||||||
case QmlRegisterSingletonTypeCallback2:
|
case QmlRegisterSingletonTypeCallback2:
|
||||||
case QmlRegisterSingletonTypeUrl:
|
case QmlRegisterSingletonTypeUrl:
|
||||||
case QmlRegisterUncreatableType:
|
case QmlRegisterUncreatableType:
|
||||||
if (!ast->expression_list->next->next->next->next
|
if (argCount != 5)
|
||||||
|| !ast->expression_list->next->next->next->next->value
|
|
||||||
|| ast->expression_list->next->next->next->next->next)
|
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case QmlRegisterUncreatableMetaObject:
|
case QmlRegisterUncreatableMetaObject:
|
||||||
if (!ast->expression_list->next->next->next->next->next
|
if (argCount != 6)
|
||||||
|| !ast->expression_list->next->next->next->next->next->value
|
|
||||||
|| ast->expression_list->next->next->next->next->next->next)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ExpressionAST *uriExp = nullptr;
|
ExpressionAST *uriExp = nullptr;
|
||||||
|
Reference in New Issue
Block a user