Skip to content

Commit

Permalink
fix second leak
Browse files Browse the repository at this point in the history
  • Loading branch information
Arniiiii committed Sep 21, 2024
1 parent 2a52ff2 commit fb26ff1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 16 deletions.
22 changes: 11 additions & 11 deletions include/fmtlog/fmtlog-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ class fmtlogDetailT
setHeaderPattern("{HMSf} {s:<16} {l}[{t:<6}] ");
logInfos.reserve(32);
bgLogInfos.reserve(128);
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::DBG, fmt::string_view());
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::INF, fmt::string_view());
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::WRN, fmt::string_view());
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::ERR, fmt::string_view());
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::DBG, std::string{});
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::INF, std::string{});
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::WRN, std::string{});
bgLogInfos.emplace_back(nullptr, nullptr, fmtlog::ERR, std::string{});
threadBuffers.reserve(8);
bgThreadBuffers.reserve(8);
memset(membuf.data(), 0, membuf.capacity());
Expand All @@ -118,8 +118,8 @@ class fmtlogDetailT
closeLogFile();
}

void setHeaderPattern(const char* pattern) {
if (shouldDeallocateHeader) delete[] headerPattern.data();
void setHeaderPattern(std::string pattern) {
// if (shouldDeallocateHeader) delete[] headerPattern.data();
using namespace fmt::literals;
for (int i = 0; i < parttenArgSize; i++) {
reorderIdx[i] = parttenArgSize - 1;
Expand All @@ -130,7 +130,7 @@ class fmtlogDetailT
"l"_a = fmtlog::LogLevel(), "s"_a = "fmtlog.cc:123", "g"_a = "/home/raomeng/fmtlog/fmtlog.cc:123", "Ymd"_a = "",
"HMS"_a = "", "HMSe"_a = "", "HMSf"_a = "", "HMSF"_a = "", "YmdHMS"_a = "", "YmdHMSe"_a = "", "YmdHMSf"_a = "",
"YmdHMSF"_a = "");
shouldDeallocateHeader = headerPattern.data() != pattern;
// shouldDeallocateHeader = headerPattern.data() != pattern;

setArg<0>(fmt::string_view(weekdayName.s, 3));
setArg<1>(fmt::string_view(monthName.s, 3));
Expand Down Expand Up @@ -177,7 +177,7 @@ class fmtlogDetailT
struct StaticLogInfo
{
// Constructor
constexpr StaticLogInfo(fmtlog::FormatToFn fn, const char* loc, fmtlog::LogLevel level, fmt::string_view fmtString)
StaticLogInfo(fmtlog::FormatToFn fn, const char* loc, fmtlog::LogLevel level, std::string fmtString)
: formatToFn(fn)
, formatString(fmtString)
, location(loc)
Expand Down Expand Up @@ -207,7 +207,7 @@ class fmtlogDetailT
inline fmt::string_view getLocation() { return fmt::string_view(location, endPos); }

fmtlog::FormatToFn formatToFn;
fmt::string_view formatString;
std::string formatString;
const char* location;
uint8_t basePos;
uint8_t endPos;
Expand All @@ -217,7 +217,7 @@ class fmtlogDetailT

static thread_local ThreadBufferDestroyer sbc;
int64_t midnightNs;
fmt::string_view headerPattern;
std::string headerPattern;
bool shouldDeallocateHeader = false;
FILE* outputFp = nullptr;
bool manageFp = false;
Expand Down Expand Up @@ -494,7 +494,7 @@ fmtlogDetailT<> fmtlogDetailWrapper<_>::impl;

template<int _>
void fmtlogT<_>::registerLogInfo(uint32_t& logId, FormatToFn fn, const char* location,
LogLevel level, fmt::string_view fmtString) noexcept {
LogLevel level, std::string fmtString) noexcept {
auto& d = fmtlogDetailWrapper<>::impl;
std::lock_guard<std::mutex> lock(d.logInfoMutex);
if (logId) return;
Expand Down
9 changes: 5 additions & 4 deletions include/fmtlog/fmtlog.h
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ class fmtlogT
int& argIdx, std::vector<fmt::basic_format_arg<Context>>& args);

static void registerLogInfo(uint32_t& logId, FormatToFn fn, const char* location, LogLevel level,
fmt::string_view fmtString) noexcept;
std::string fmtString) noexcept;

static void vformat_to(MemoryBuffer& out, fmt::string_view fmt, fmt::format_args args);

Expand Down Expand Up @@ -610,11 +610,11 @@ class fmtlogT
}

template<bool Reorder, typename... Args>
static std::string unNameFormat(fmt::string_view in, uint32_t* reorderIdx,
static std::string unNameFormat(std::string in, uint32_t* reorderIdx,
const Args&... args) {
constexpr size_t num_named_args = fmt::detail::count<isNamedArg<Args>()...>();
if constexpr (num_named_args == 0) {
return std::string{in.begin(),in.end()};
return in;
}
const char* begin = in.data();
const char* p = begin;
Expand Down Expand Up @@ -679,7 +679,8 @@ class fmtlogT
fmt::format_string<typename fmtlogdetail::UnrefPtr<fmt::remove_cvref_t<Args>>::type...> format,
Args&&... args) noexcept {
if (!logId) {
auto unnamed_format = unNameFormat<false>(fmt::string_view(format), nullptr, args...);
fmt::string_view format_str_v = format.get();
auto unnamed_format = unNameFormat<false>(std::string{format_str_v.begin(),format_str_v.end()}, nullptr, args...);
registerLogInfo(logId, formatTo<Args...>, location, level, unnamed_format);
}
constexpr size_t num_cstring = fmt::detail::count<isCstring<Args>()...>();
Expand Down
2 changes: 1 addition & 1 deletion test/src/enc_dec_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ void test(const S& format, Args&&... args) {
string ans = fmt::format(fmt::runtime(sv), std::forward<Args>(args)...);
assert(ans.size() == formatted_size);

auto unnamed_format = fmtlog::unNameFormat<false>(sv, nullptr, args...);
auto unnamed_format = fmtlog::unNameFormat<false>(format, nullptr, args...);
fmt::print("unnamed_format: {}\n", unnamed_format);
size_t cstringSizes[1000];
char buf[1024];
Expand Down

0 comments on commit fb26ff1

Please sign in to comment.