diff --git a/src/dbus_helpers.h b/src/dbus_helpers.h index 9c1b3dc1..063dbb48 100644 --- a/src/dbus_helpers.h +++ b/src/dbus_helpers.h @@ -4,6 +4,7 @@ #include #include +#include #include "loaders/loader_dbus.h" @@ -140,10 +141,9 @@ auto DBusMessageIter_wrap::get_primitive() -> T { SPDLOG_ERROR("Type mismatch: '{}' vs '{}'", ((char)requested_type), (char)type()); #ifndef NDEBUG - exit(-1); -#else - return T(); + raise(SIGTRAP); #endif + return T(); } T ret; @@ -153,7 +153,10 @@ auto DBusMessageIter_wrap::get_primitive() -> T { template <> auto DBusMessageIter_wrap::get_primitive() -> std::string { - return std::string(get_primitive()); + auto s = get_primitive(); + if (!s) + return std::string(); + return std::string(s); } uint64_t DBusMessageIter_wrap::get_unsigned() {