commit - 9d3859b246977c307a22f5930755fe77e374a634
commit + fffd8298be288a0d5d046aa46882587a09bacf14
blob - b4500da9cad3d96ed0406836754e3336d1abe269
blob + 3895f1547c712dcbb87860f238a8369bb8bff502
--- test/fuzz/luaL_loadbuffer/serializer.cc
+++ test/fuzz/luaL_loadbuffer/serializer.cc
} else if (std::isalpha(c) || c == '_') {
has_first_not_digit = true;
cleared += c;
+ } else {
+ cleared += '_';
}
}
return cleared;
}
inline std::string
-ConvertToStringDefault(const std::string &s)
+ConvertToStringDefault(const std::string &s, bool sanitize = false)
{
- std::string ident = ClearIdentifier(s);
- ident = clamp(ident);
+ std::string ident = clamp(s);
+ if (sanitize)
+ ident = ClearIdentifier(ident);
if (ident.empty())
- return std::string(kDefaultIdent);
+ ident = std::string(kDefaultIdent);
return ident;
}
{
std::string indexname_str = PrefixExpressionToString(
indexname.prefixexp());
- std::string idx_str = ConvertToStringDefault(indexname.name());
+ std::string idx_str = ConvertToStringDefault(indexname.name(), true);
/* Prevent using reserved keywords as indices. */
if (KReservedLuaKeywords.find(idx_str) != KReservedLuaKeywords.end()) {
idx_str += "_1";
*/
PROTO_TOSTRING(Name, name)
{
- std::string ident = ConvertToStringDefault(name.name());
- return ident + std::to_string(name.num() % kMaxIdentifiers);
+ std::string ident = ConvertToStringDefault(name.name(), true);
+ /* Identifier has default name, add an index. */
+ if (!ident.compare(kDefaultIdent)) {
+ ident += std::to_string(name.num() % kMaxIdentifiers);
+ }
+ return ident;
}
} /* namespace */