Skip to content

Commit 92beff1

Browse files
committed
Convert LimitedString to formatter
1 parent ef17c03 commit 92beff1

File tree

2 files changed

+9
-17
lines changed

2 files changed

+9
-17
lines changed

src/serialize.h

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ static inline Wrapper<Formatter, T&> Using(T&& t) { return Wrapper<Formatter, T&
503503
#define VARINT_MODE(obj, mode) Using<VarIntFormatter<mode>>(obj)
504504
#define VARINT(obj) Using<VarIntFormatter<VarIntMode::DEFAULT>>(obj)
505505
#define COMPACTSIZE(obj) Using<CompactSizeFormatter>(obj)
506-
#define LIMITED_STRING(obj,n) LimitedString< n >(REF(obj))
506+
#define LIMITED_STRING(obj,n) Using<LimitedStringFormatter<n>>(obj)
507507

508508
/** Serialization wrapper class for integers in VarInt format. */
509509
template<VarIntMode Mode>
@@ -588,31 +588,23 @@ struct CompactSizeFormatter
588588
};
589589

590590
template<size_t Limit>
591-
class LimitedString
591+
struct LimitedStringFormatter
592592
{
593-
protected:
594-
std::string& string;
595-
public:
596-
explicit LimitedString(std::string& _string) : string(_string) {}
597-
598593
template<typename Stream>
599-
void Unserialize(Stream& s)
594+
void Unser(Stream& s, std::string& v)
600595
{
601596
size_t size = ReadCompactSize(s);
602597
if (size > Limit) {
603598
throw std::ios_base::failure("String length limit exceeded");
604599
}
605-
string.resize(size);
606-
if (size != 0)
607-
s.read((char*)string.data(), size);
600+
v.resize(size);
601+
if (size != 0) s.read((char*)v.data(), size);
608602
}
609603

610604
template<typename Stream>
611-
void Serialize(Stream& s) const
605+
void Ser(Stream& s, const std::string& v)
612606
{
613-
WriteCompactSize(s, string.size());
614-
if (!string.empty())
615-
s.write((char*)string.data(), string.size());
607+
s << v;
616608
}
617609
};
618610

src/test/fuzz/string.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
9393
{
9494
CDataStream data_stream{SER_NETWORK, INIT_PROTO_VERSION};
9595
std::string s;
96-
LimitedString<10> limited_string = LIMITED_STRING(s, 10);
96+
auto limited_string = LIMITED_STRING(s, 10);
9797
data_stream << random_string_1;
9898
try {
9999
data_stream >> limited_string;
@@ -108,7 +108,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
108108
}
109109
{
110110
CDataStream data_stream{SER_NETWORK, INIT_PROTO_VERSION};
111-
const LimitedString<10> limited_string = LIMITED_STRING(random_string_1, 10);
111+
const auto limited_string = LIMITED_STRING(random_string_1, 10);
112112
data_stream << limited_string;
113113
std::string deserialized_string;
114114
data_stream >> deserialized_string;

0 commit comments

Comments
 (0)