History

identify the largest number of parameters any of our method overrides accept and discard script parameters beyond that count

Heather Anderson committed 4 years ago

Commit a8221101 parent 4d6889a2 files · +12 −5Browse files

Showing the changes to libraries/script-engine/src/qtscript/ScriptObjectQtProxy.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/qtscript/ScriptObjectQtProxy.cpp+6−3
@@ -205,9 +205,11 @@ void ScriptObjectQtProxy::investigate() { · 204 unmodified lines
205205 }
206206 }
207207 } else {
208+ int parameterCount = method.parameterCount();
208209 if (nameLookup == methodNames.end()) {
209210 MethodDef& methodDef = _methods.insert(idx, MethodDef()).value();
210211 methodDef.name = name;
212+ methodDef.numMaxParms = parameterCount;
211213 methodDef.methods.append(method);
212214 methodNames.insert(name, idx);
213215 } else {
@@ -215,6 +217,7 @@ void ScriptObjectQtProxy::investigate() { · 1 unmodified line
215217 MethodDefMap::iterator methodLookup = _methods.find(originalMethodId);
216218 Q_ASSERT(methodLookup != _methods.end());
217219 MethodDef& methodDef = methodLookup.value();
220+ if(methodDef.numMaxParms < parameterCount) methodDef.numMaxParms = parameterCount;
218221 methodDef.methods.append(method);
219222 }
220223 }
@@ -312,8 +315,9 @@ QScriptValue ScriptObjectQtProxy::property(const QScriptValue& object, const QSc · 91 unmodified lines
312315 int methodId = id & ~TYPE_MASK;
313316 MethodDefMap::const_iterator lookup = _methods.find(methodId);
314317 if (lookup == _methods.cend()) return QScriptValue();
318+ const MethodDef& methodDef = lookup.value();
315319 return static_cast<QScriptEngine*>(_engine)->newObject(
316− new ScriptMethodQtProxy(_engine, qobject, object, lookup.value().methods));
320+ new ScriptMethodQtProxy(_engine, qobject, object, methodDef.methods, methodDef.numMaxParms));
317321 }
318322 case SIGNAL_TYPE: {
319323 int signalId = id & ~TYPE_MASK;
@@ -430,8 +434,7 @@ QVariant ScriptMethodQtProxy::extension(Extension extension, const QVariant& arg · 110 unmodified lines
430434 }
431435
432436 int scriptNumArgs = context->argumentCount();
433− Q_ASSERT(scriptNumArgs < 10);
434− int numArgs = std::min(scriptNumArgs, 10);
437+ int numArgs = std::min(scriptNumArgs, _numMaxParms);
435438
436439 const int scriptValueTypeId = qMetaTypeId<ScriptValue>();
437440

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t