diff --git a/cxx/src/api/api.cpp b/cxx/src/api/api.cpp index 3878917c..a2bcb6ae 100644 --- a/cxx/src/api/api.cpp +++ b/cxx/src/api/api.cpp @@ -32,7 +32,9 @@ void libloot_set_logging_callback(void (*callback)(uint8_t, const char*, void*), namespace { using loot::LogLevel; -static std::function STORED_CALLBACK; +typedef std::function Callback; + +static Callback STORED_CALLBACK; LogLevel convert(uint8_t level) { if (level == LIBLOOT_LOG_LEVEL_TRACE) { @@ -70,16 +72,14 @@ loot::rust::LogLevel convert(LogLevel level) { } void logging_callback(uint8_t level, const char* message, void* context) { - auto callbackPtr = - static_cast*>(context); + auto& callback = *static_cast(context); - (*callbackPtr)(convert(level), message); + callback(convert(level), message); } } namespace loot { -LOOT_API void SetLoggingCallback( - std::function callback) { +LOOT_API void SetLoggingCallback(Callback callback) { STORED_CALLBACK = callback; libloot_set_logging_callback(logging_callback, &STORED_CALLBACK); }