From 5b862aa38c4fcb1c91797c947ff86b5f70b3ba54 Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Sat, 18 Jan 2020 10:31:06 -0500 Subject: Bug 1352082 - Avoid shifting a signed integer left in C++. Tag UXP Issue #1344 --- .../validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java | 4 ++++ .../nu/validator/htmlparser/cpptranslate/CppTypes.java | 4 ++++ .../nu/validator/htmlparser/cpptranslate/CppVisitor.java | 6 +++++- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'parser/html/java/htmlparser/translator-src') diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java index 337394a89..dc524820f 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java @@ -72,6 +72,10 @@ public class AnnotationHelperVisitor extends VoidVisitorAdapter { return hasAnnotation("NoLength"); } + protected boolean unsigned() { + return hasAnnotation("Unsigned"); + } + protected boolean auto() { return hasAnnotation("Auto"); } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java index 80216da0e..6cbba4162 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java @@ -192,6 +192,10 @@ public class CppTypes { return "int32_t"; } + public String unsignedIntType() { + return "uint32_t"; + } + public String stringType() { return "nsHtml5String"; } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java index f4f00070a..bf5775eb6 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java @@ -548,7 +548,11 @@ public class CppVisitor extends AnnotationHelperVisitor { case Float: throw new IllegalStateException("Unsupported primitive."); case Int: - printer.print(cppTypes.intType()); + if (unsigned()) { + printer.print(cppTypes.unsignedIntType()); + } else { + printer.print(cppTypes.intType()); + } break; case Long: throw new IllegalStateException("Unsupported primitive."); -- cgit v1.2.3