aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil Hodgson <nyamatongwe@gmail.com>2018-09-18 13:00:08 +1000
committerNeil Hodgson <nyamatongwe@gmail.com>2018-09-18 13:00:08 +1000
commit7263fd79dc1b9e150d7a9e22c52c34d7b5a123dd (patch)
tree95ce0eec176af6713321ffdd6fd19af097f6fe06
parent951d567659000925cbeaf03dbe6b9efc75802cac (diff)
downloadscintilla-mirror-7263fd79dc1b9e150d7a9e22c52c34d7b5a123dd.tar.gz
Guard against shifting by negative amount as that is undefined behaviour.
-rw-r--r--lexers/LexCPP.cxx6
-rw-r--r--lexers/LexVerilog.cxx6
2 files changed, 10 insertions, 2 deletions
diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx
index 2cd3975e0..ee645e9e0 100644
--- a/lexers/LexCPP.cxx
+++ b/lexers/LexCPP.cxx
@@ -242,7 +242,11 @@ class LinePPState {
return level >= 0 && level < 32;
}
int maskLevel() const noexcept {
- return 1 << level;
+ if (level >= 0) {
+ return 1 << level;
+ } else {
+ return 1;
+ }
}
public:
LinePPState() : state(0), ifTaken(0), level(-1) {
diff --git a/lexers/LexVerilog.cxx b/lexers/LexVerilog.cxx
index 901b6e93d..640f12fcb 100644
--- a/lexers/LexVerilog.cxx
+++ b/lexers/LexVerilog.cxx
@@ -57,7 +57,11 @@ class LinePPState {
return level >= 0 && level < 32;
}
int maskLevel() const {
- return 1 << level;
+ if (level >= 0) {
+ return 1 << level;
+ } else {
+ return 1;
+ }
}
public:
LinePPState() : state(0), ifTaken(0), level(-1) {