Skip to content

Commit 3f15a29

Browse files
committed
Fix fmt function to handle empty strings and update make_prefix template parameters
1 parent 21db9f3 commit 3f15a29

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

src/libipc/imp/fmt.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ void fmt_context::expend(std::size_t sz) noexcept {
199199

200200
bool fmt_context::append(span<char const> const &str) noexcept {
201201
auto sz = str.size();
202+
if (sz == 0) return true;
202203
if (str.back() == '\0') --sz;
203204
auto sbuf = buffer(sz);
204205
if (sbuf.size() < sz) {

src/libipc/memory/resource.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ inline std::string make_string(char const *str) {
4646
}
4747

4848
/// \brief Combine prefix from a list of strings.
49-
template <typename... A>
50-
inline std::string make_prefix(std::string prefix, A &&...args) {
51-
return ipc::fmt(prefix, "__IPC_SHM__", std::forward<A>(args)...);
49+
template <typename A1, typename... A>
50+
inline std::string make_prefix(A1 &&prefix, A &&...args) {
51+
return ipc::fmt(std::forward<A1>(prefix), "__IPC_SHM__", std::forward<A>(args)...);
5252
}
5353

5454
} // namespace ipc

test/imp/test_imp_fmt.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,13 @@ TEST(fmt, fmt) {
110110
std::string test(4096, ' ');
111111
std::memcpy(&test[test.size() - sizeof(txt) + 1], txt, sizeof(txt) - 1);
112112
EXPECT_EQ(s, test);
113+
114+
EXPECT_EQ(ipc::fmt("", 1, "", '2', "", 3.0), "123.000000");
115+
std::string empty;
116+
EXPECT_EQ(ipc::fmt(empty, 1, "", '2', "", 3.0), "123.000000");
117+
EXPECT_EQ(ipc::fmt(empty, 1, empty, '2', "", 3.0), "123.000000");
118+
EXPECT_EQ(ipc::fmt("", 1, empty, '2', empty, 3.0), "123.000000");
119+
EXPECT_EQ(ipc::fmt("", 1, "", '2', empty), "12");
113120
}
114121

115122
namespace {

0 commit comments

Comments
 (0)