From 4cf0962dc4d8d48aa600c5b56b160c8553782140 Mon Sep 17 00:00:00 2001 From: Maximilian Goldstein Date: Wed, 1 Apr 2020 08:14:52 +0200 Subject: Warn if too many parameters are passed to a C++ function Change-Id: I8ddf55d48d9276be5880e89e7b854f3355891f8e Reviewed-by: Ulf Hermann --- src/qml/jsruntime/qv4qobjectwrapper.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 4e387d0380..ea809064a3 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -1574,6 +1574,18 @@ static QV4::ReturnedValue CallPrecise(const QQmlObjectOrGadget &object, const QQ return engine->throwError(error); } + if (args[0] < callArgs->argc()) { + Q_ASSERT(!engine->stackTrace().isEmpty()); + + const StackFrame frame = engine->stackTrace().first(); + qWarning().noquote() << frame.function + QLatin1Char('@') + frame.source + + (frame.line > 0 ? (QLatin1Char(':') + QString::number(frame.line)) + : QString()); + + qWarning().noquote() << QStringLiteral("Too many arguments, ignoring %1") + .arg(callArgs->argc() - args[0]); + } + return CallMethod(object, data.coreIndex(), returnType, args[0], args + 1, engine, callArgs, callType); } else { -- cgit v1.2.3