mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-28 02:11:43 +00:00
[ntcore] Fix dangling pointer in logger (#3465)
This is a breaking change (it changes LogMessage::filename from const char* to std::string) but there should be few users of it.
This commit is contained in:
@@ -71,5 +71,5 @@ void LoggerImpl::Log(unsigned int level, const char* file, unsigned int line,
|
||||
DefaultLogger(level, filename.string().c_str(), line, msg);
|
||||
}
|
||||
}
|
||||
Send(UINT_MAX, 0, level, filename.string().c_str(), line, msg);
|
||||
Send(UINT_MAX, 0, level, filename.string(), line, msg);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ static void ConvertToC(const ConnectionNotification& in,
|
||||
static void ConvertToC(const LogMessage& in, NT_LogMessage* out) {
|
||||
out->logger = in.logger;
|
||||
out->level = in.level;
|
||||
out->filename = in.filename;
|
||||
ConvertToC(in.filename, &out->filename);
|
||||
out->line = in.line;
|
||||
ConvertToC(in.message, &out->message);
|
||||
}
|
||||
@@ -847,6 +847,7 @@ void NT_DisposeLogMessageArray(NT_LogMessage* arr, size_t count) {
|
||||
}
|
||||
|
||||
void NT_DisposeLogMessage(NT_LogMessage* info) {
|
||||
std::free(info->filename);
|
||||
std::free(info->message);
|
||||
}
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ struct NT_LogMessage {
|
||||
unsigned int level;
|
||||
|
||||
/** The filename of the source file that generated the message. */
|
||||
const char* filename;
|
||||
char* filename;
|
||||
|
||||
/** The line number in the source file that generated the message. */
|
||||
unsigned int line;
|
||||
|
||||
@@ -243,7 +243,7 @@ class ConnectionNotification {
|
||||
class LogMessage {
|
||||
public:
|
||||
LogMessage() = default;
|
||||
LogMessage(NT_Logger logger_, unsigned int level_, const char* filename_,
|
||||
LogMessage(NT_Logger logger_, unsigned int level_, std::string_view filename_,
|
||||
unsigned int line_, std::string_view message_)
|
||||
: logger(logger_),
|
||||
level(level_),
|
||||
@@ -258,7 +258,7 @@ class LogMessage {
|
||||
unsigned int level{0};
|
||||
|
||||
/** The filename of the source file that generated the message. */
|
||||
const char* filename{""};
|
||||
std::string filename;
|
||||
|
||||
/** The line number in the source file that generated the message. */
|
||||
unsigned int line{0};
|
||||
|
||||
Reference in New Issue
Block a user