Skip to content

Commit d5f80a5

Browse files
authored
Merge pull request aeron-io#716 from trozen/cpp-char-field-print
[C++] Non-printable CHAR printed as int
2 parents a3afc6d + de7e35e commit d5f80a5

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2532,7 +2532,12 @@ private CharSequence writeTokenDisplay(
25322532
// have to duplicate because of checkstyle :/
25332533
if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR)
25342534
{
2535-
sb.append(indent + "builder << '\"' << (char)" + fieldName + "() << '\"';\n");
2535+
sb.append(
2536+
indent + "if (std::isprint(" + fieldName + "())) {\n" +
2537+
indent + " builder << '\"' << (char)" + fieldName + "() << '\"';\n" +
2538+
indent + "} else {\n" +
2539+
indent + " builder << (int)" + fieldName + "();\n" +
2540+
indent + "}\n");
25362541
}
25372542
else
25382543
{

0 commit comments

Comments
 (0)