@@ -1298,17 +1298,35 @@ private CharSequence generateArrayProperty(
12981298
12991299 sb .append (String .format ("\n " +
13001300 indent + " #if __cplusplus >= 201703L\n " +
1301- indent + " %1$s &put%2$s(std::string_view str) SBE_NOEXCEPT \n " +
1301+ indent + " %1$s &put%2$s(std::string_view str)\n " +
13021302 indent + " {\n " +
1303- indent + " size_t length = str.length() < %4$d ? str.length() : %4$d;\n " +
1303+ indent + " const size_t srcLength = str.length();\n " +
1304+ indent + " if (srcLength > %4$d)\n " +
1305+ indent + " {\n " +
1306+ indent + " throw std::runtime_error(\" string too large for put%2$s [E106]\" );\n " +
1307+ indent + " }\n \n " +
1308+ indent + " size_t length = srcLength < %4$d ? srcLength : %4$d;\n " +
13041309 indent + " std::memcpy(m_buffer + m_offset + %3$d, str.c_str(), length);\n " +
1310+ indent + " for (size_t start = srcLength; start < length; ++start)\n " +
1311+ indent + " {\n " +
1312+ indent + " m_buffer[m_offset + %3$d + start] = 0;\n " +
1313+ indent + " }\n \n " +
13051314 indent + " return *this;\n " +
13061315 indent + " }\n " +
13071316 indent + " #else\n " +
1308- indent + " %1$s &put%2$s(const std::string& str) SBE_NOEXCEPT \n " +
1317+ indent + " %1$s &put%2$s(const std::string& str)\n " +
13091318 indent + " {\n " +
1310- indent + " size_t length = str.length() < %4$d ? str.length() : %4$d;\n " +
1319+ indent + " const size_t srcLength = str.length();\n " +
1320+ indent + " if (srcLength > %4$d)\n " +
1321+ indent + " {\n " +
1322+ indent + " throw std::runtime_error(\" string too large for put%2$s [E106]\" );\n " +
1323+ indent + " }\n \n " +
1324+ indent + " size_t length = srcLength < %4$d ? srcLength : %4$d;\n " +
13111325 indent + " std::memcpy(m_buffer + m_offset + %3$d, str.c_str(), length);\n " +
1326+ indent + " for (size_t start = srcLength; start < length; ++start)\n " +
1327+ indent + " {\n " +
1328+ indent + " m_buffer[m_offset + %3$d + start] = 0;\n " +
1329+ indent + " }\n \n " +
13121330 indent + " return *this;\n " +
13131331 indent + " }\n " +
13141332 indent + " #endif\n " ,
0 commit comments