summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2016-12-03 18:58:59 -0500
committerBrett Stottlemyer <bstottle@ford.com>2016-12-05 16:51:08 +0000
commitfc881f28987764e48237d648622e6227c2ad3237 (patch)
treec9a21f3ec6d7dcc6672fa627d7872ea0f1acf929 /tools
parent54f7f9b47e38700e847c3d16f2d8694799037d49 (diff)
Fix SourceApi lookup
The coverity scan pointed to a bug in SourceApi where the intent was for the static parameter checks (based on the static QObject::connect eval) to return the list of argument types from the lookup. It didn't before, now it does. Updated repc so autogenerated code includes the same changes. Coverity-Id: 172053 Coverity-Id: 172054 Coverity-Id: 172060 Change-Id: I8e5ef9df028d5895153cdb2a97636218f64fb618 Reviewed-by: Continuous Integration (KDAB) <build@kdab.com> Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/repc/repcodegenerator.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/repc/repcodegenerator.cpp b/tools/repc/repcodegenerator.cpp
index 49557b4..502b6bc 100644
--- a/tools/repc/repcodegenerator.cpp
+++ b/tools/repc/repcodegenerator.cpp
@@ -810,6 +810,9 @@ void RepCodeGenerator::generateSourceAPI(QTextStream &out, const ASTClass &astCl
generateDeclarationsForEnums(out, astClass.enums, false);
}
out << QString::fromLatin1(" %1()").arg(className) << endl;
+ out << QStringLiteral(" : SourceApiMap()") << endl;
+ out << QStringLiteral(" , signalArgTypes{}") << endl;
+ out << QStringLiteral(" , methodArgTypes{}") << endl;
out << QStringLiteral(" {") << endl;
const int propCount = astClass.properties.count();
out << QString::fromLatin1(" _properties[0] = %1;").arg(propCount) << endl;
@@ -836,12 +839,12 @@ void RepCodeGenerator::generateSourceAPI(QTextStream &out, const ASTClass &astCl
out << QString::fromLatin1(" _signals[0] = %1;").arg(signalCount+changeSignals.size()) << endl;
for (int i = 0; i < changedCount; ++i)
out << QString::fromLatin1(" _signals[%1] = qtro_signal_index<ObjectType>(&ObjectType::%2, "
- "static_cast<void (QObject::*)()>(0),signalArgCount+%4,signalArgTypes[%4]);")
+ "static_cast<void (QObject::*)()>(0),signalArgCount+%4,&signalArgTypes[%4]);")
.arg(i+1).arg(changeSignals.at(i)).arg(i) << endl;
for (int i = 0; i < signalCount; ++i) {
const ASTFunction &sig = astClass.signalsList.at(i);
out << QString::fromLatin1(" _signals[%1] = qtro_signal_index<ObjectType>(&ObjectType::%2, "
- "static_cast<void (QObject::*)(%3)>(0),signalArgCount+%4,signalArgTypes[%4]);")
+ "static_cast<void (QObject::*)(%3)>(0),signalArgCount+%4,&signalArgTypes[%4]);")
.arg(QString::number(changedCount+i+1), sig.name, sig.paramsAsString(ASTFunction::Normalized), QString::number(i)) << endl;
}
const int slotCount = astClass.slotsList.count();
@@ -849,7 +852,7 @@ void RepCodeGenerator::generateSourceAPI(QTextStream &out, const ASTClass &astCl
for (int i = 0; i < slotCount; ++i) {
const ASTFunction &slot = astClass.slotsList.at(i);
out << QString::fromLatin1(" _methods[%1] = qtro_method_index<ObjectType>(&ObjectType::%2, "
- "static_cast<void (QObject::*)(%3)>(0),\"%2(%3)\",methodArgCount+%4,methodArgTypes[%4]);")
+ "static_cast<void (QObject::*)(%3)>(0),\"%2(%3)\",methodArgCount+%4,&methodArgTypes[%4]);")
.arg(QString::number(i+1), slot.name, slot.paramsAsString(ASTFunction::Normalized), QString::number(i)) << endl;
}