diff --git a/src/Magnum/GL/DebugOutput.cpp b/src/Magnum/GL/DebugOutput.cpp index f434116ee..871ae7180 100644 --- a/src/Magnum/GL/DebugOutput.cpp +++ b/src/Magnum/GL/DebugOutput.cpp @@ -104,8 +104,10 @@ void APIENTRY #endif callbackWrapper(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam) { - const auto& callback = *static_cast(userParam); - callback.callback(DebugOutput::Source(source), DebugOutput::Type(type), id, DebugOutput::Severity(severity), std::string{message, std::size_t(length)}, callback.userParam); + auto& callback = *static_cast(const_cast(userParam)); + callback.buf.reserve(256); + callback.buf.assign(message, std::size_t(length)); + callback.callback(DebugOutput::Source(source), DebugOutput::Type(type), id, DebugOutput::Severity(severity), callback.buf, callback.userParam); } } diff --git a/src/Magnum/GL/Implementation/DebugState.h b/src/Magnum/GL/Implementation/DebugState.h index 912bd5e71..e76a07004 100644 --- a/src/Magnum/GL/Implementation/DebugState.h +++ b/src/Magnum/GL/Implementation/DebugState.h @@ -50,6 +50,7 @@ struct DebugState { struct MessageCallback { DebugOutput::Callback callback{}; const void* userParam{}; + std::string buf; } messageCallback; };