Skip to content

Commit 89e9313

Browse files
committed
Merge bitcoin#17427: qt: Fix missing qRegisterMetaType for size_t
1828c6f refactor: Styling w/ clang-format, comment update (Hennadii Stepanov) 88a94f7 qt: Fix missing qRegisterMetaType for size_t (Hennadii Stepanov) Pull request description: On master (a7aec7a) this connection https://github.com/bitcoin/bitcoin/blob/a7aec7ad97949a82f870c033d8fd8b65d772eacb/src/qt/rpcconsole.cpp#L587 fails due to `ClientModel::mempoolSizeChanged()` signal has unregistered parameter type `size_t`: https://github.com/bitcoin/bitcoin/blob/a7aec7ad97949a82f870c033d8fd8b65d772eacb/src/qt/clientmodel.h#L102 More: ``` $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- -debug=qt ... (lldb) bt * thread bitcoin#17, name = 'QThread', stop reason = signal SIGABRT * frame #0: 0x00007ffff35fce97 libc.so.6`__GI_raise(sig=2) at raise.c:51 frame #1: 0x00007ffff35fe801 libc.so.6`__GI_abort at abort.c:79 frame #2: 0x00007ffff5901352 libQt5Core.so.5`QMessageLogger::warning(char const*, ...) const + 354 frame #3: 0x00007ffff5b216fe libQt5Core.so.5`___lldb_unnamed_symbol2329$$libQt5Core.so.5 + 334 frame #4: 0x00007ffff5b2456d libQt5Core.so.5`QMetaObject::activate(QObject*, int, int, void**) + 1933 frame #5: 0x000055555566872e bitcoin-qt`ClientModel::mempoolSizeChanged(this=<unavailable>, _t1=<unavailable>, _t2=<unavailable>) at moc_clientmodel.cpp:260 ... ``` `debug.log`: ``` [] GUI: QObject::connect: Cannot queue arguments of type 'size_t' (Make sure 'size_t' is registered using qRegisterMetaType().) ``` This PR fixes it. Refs: - [Qt docs: qRegisterMetaType](https://doc.qt.io/qt-5/qmetatype.html#qRegisterMetaType) - bitcoin#16348 --- Side NOTE: Also I believe this line https://github.com/bitcoin/bitcoin/blob/a7aec7ad97949a82f870c033d8fd8b65d772eacb/src/qt/bitcoin.cpp#L63 is redundant since long `CAmount` is a `typedef`. ACKs for top commit: laanwj: Tested ACK 1828c6f Tree-SHA512: 2c7f9fe6a5ae70f2e1dd86b07f95d4b00c85c5706a9d722f063f80beb71880d012ec46556963fb1544c2af53d006936c2f7612eae60d9193f67db62ba3d86129
2 parents ecc1a4e + 1828c6f commit 89e9313

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/qt/bitcoin.cpp

+9-6
Original file line numberDiff line numberDiff line change
@@ -430,16 +430,19 @@ int GuiMain(int argc, char* argv[])
430430

431431
BitcoinApplication app(*node);
432432

433-
// Register meta types used for QMetaObject::invokeMethod
434-
qRegisterMetaType< bool* >();
433+
// Register meta types used for QMetaObject::invokeMethod and Qt::QueuedConnection
434+
qRegisterMetaType<bool*>();
435435
#ifdef ENABLE_WALLET
436436
qRegisterMetaType<WalletModel*>();
437437
#endif
438-
// Need to pass name here as CAmount is a typedef (see http://qt-project.org/doc/qt-5/qmetatype.html#qRegisterMetaType)
439-
// IMPORTANT if it is no longer a typedef use the normal variant above
440-
qRegisterMetaType< CAmount >("CAmount");
441-
qRegisterMetaType< std::function<void()> >("std::function<void()>");
438+
// Register typedefs (see http://qt-project.org/doc/qt-5/qmetatype.html#qRegisterMetaType)
439+
// IMPORTANT: if CAmount is no longer a typedef use the normal variant above (see https://doc.qt.io/qt-5/qmetatype.html#qRegisterMetaType-1)
440+
qRegisterMetaType<CAmount>("CAmount");
441+
qRegisterMetaType<size_t>("size_t");
442+
443+
qRegisterMetaType<std::function<void()>>("std::function<void()>");
442444
qRegisterMetaType<QMessageBox::Icon>("QMessageBox::Icon");
445+
443446
/// 2. Parse command-line options. We do this after qt in order to show an error if there are problems parsing these
444447
// Command-line options take precedence:
445448
node->setupServerArgs();

0 commit comments

Comments
 (0)