diff options
author | Jędrzej Nowacki <jedrzej.nowacki@qt.io> | 2018-09-24 11:28:46 +0200 |
---|---|---|
committer | Jędrzej Nowacki <jedrzej.nowacki@qt.io> | 2018-10-01 09:45:31 +0000 |
commit | 5b99f3a34fef527beb8767eb12657f81ee65b969 (patch) | |
tree | 3fd514bd1a10ee11a0d16ef9b541e6a2b14edb4d /src/tools/moc/generator.cpp | |
parent | b9ce354fb09bae11e04e1cb6b37e037a7c93b749 (diff) |
Use std::addressof for taking an address instead of operator& in moc
Moc shouldn't artificially introduce calls to possibly overloaded
operator&. It can cause odd side effects in a user code.
Change-Id: Iaa1b491fe6a1a5ebd4dfa1172359dc792cc7604f
Fixes: QTBUG-68191
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/tools/moc/generator.cpp')
-rw-r--r-- | src/tools/moc/generator.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 9fb980893f..c8882343f4 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -1549,16 +1549,16 @@ void Generator::generateSignal(FunctionDef *def,int index) fprintf(out, "nullptr"); } else { if (def->returnTypeIsVolatile) - fprintf(out, "const_cast<void*>(reinterpret_cast<const volatile void*>(&_t0))"); + fprintf(out, "const_cast<void*>(reinterpret_cast<const volatile void*>(std::addressof(_t0)))"); else - fprintf(out, "const_cast<void*>(reinterpret_cast<const void*>(&_t0))"); + fprintf(out, "const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t0)))"); } int i; for (i = 1; i < offset; ++i) if (i <= def->arguments.count() && def->arguments.at(i - 1).type.isVolatile) - fprintf(out, ", const_cast<void*>(reinterpret_cast<const volatile void*>(&_t%d))", i); + fprintf(out, ", const_cast<void*>(reinterpret_cast<const volatile void*>(std::addressof(_t%d)))", i); else - fprintf(out, ", const_cast<void*>(reinterpret_cast<const void*>(&_t%d))", i); + fprintf(out, ", const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t%d)))", i); fprintf(out, " };\n"); fprintf(out, " QMetaObject::activate(%s, &staticMetaObject, %d, _a);\n", thisPtr.constData(), index); if (def->normalizedType != "void") |