Compute first byte for forward Progs only.
Change-Id: I1549b85dc830dd1bcee8281516594ad7cb0f4fe0
Reviewed-on: https://code-review.googlesource.com/c/re2/+/56471
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/compile.cc b/re2/compile.cc
index 2f64a80..7c1951e 100644
--- a/re2/compile.cc
+++ b/re2/compile.cc
@@ -1187,12 +1187,14 @@
prog_->Flatten();
prog_->ComputeByteMap();
- // Compute first byte.
- std::string prefix;
- bool prefix_foldcase;
- if (re->RequiredPrefixUnanchored(&prefix, &prefix_foldcase) &&
- !prefix_foldcase)
- prog_->set_first_byte(prefix[0]);
+ if (!prog_->reversed()) {
+ // Compute first byte.
+ std::string prefix;
+ bool prefix_foldcase;
+ if (re->RequiredPrefixUnanchored(&prefix, &prefix_foldcase) &&
+ !prefix_foldcase)
+ prog_->set_first_byte(prefix[0]);
+ }
// Record remaining memory for DFA.
if (max_mem_ <= 0) {