Include the pattern length in "DFA out of memory" errors.
Change-Id: I2f1bafafaa4012b5d9d69e6e955d300fbea03b49
Reviewed-on: https://code-review.googlesource.com/c/re2/+/53870
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/re2.cc b/re2/re2.cc
index 8c9ed4d..eb8ab3e 100644
--- a/re2/re2.cc
+++ b/re2/re2.cc
@@ -689,9 +689,11 @@
Prog::kLongestMatch, matchp, &dfa_failed, NULL)) {
if (dfa_failed) {
if (options_.log_errors())
- LOG(ERROR) << "DFA out of memory: size " << prog->size() << ", "
- << "bytemap range " << prog->bytemap_range() << ", "
- << "list count " << prog->list_count();
+ LOG(ERROR) << "DFA out of memory: "
+ << "pattern length " << pattern_.size() << ", "
+ << "program size " << prog->size() << ", "
+ << "list count " << prog->list_count() << ", "
+ << "bytemap range " << prog->bytemap_range();
// Fall back to NFA below.
skipped_test = true;
break;
@@ -707,9 +709,11 @@
matchp, &dfa_failed, NULL)) {
if (dfa_failed) {
if (options_.log_errors())
- LOG(ERROR) << "DFA out of memory: size " << prog_->size() << ", "
- << "bytemap range " << prog_->bytemap_range() << ", "
- << "list count " << prog_->list_count();
+ LOG(ERROR) << "DFA out of memory: "
+ << "pattern length " << pattern_.size() << ", "
+ << "program size " << prog_->size() << ", "
+ << "list count " << prog_->list_count() << ", "
+ << "bytemap range " << prog_->bytemap_range();
// Fall back to NFA below.
skipped_test = true;
break;
@@ -731,9 +735,11 @@
Prog::kLongestMatch, &match, &dfa_failed, NULL)) {
if (dfa_failed) {
if (options_.log_errors())
- LOG(ERROR) << "DFA out of memory: size " << prog->size() << ", "
- << "bytemap range " << prog->bytemap_range() << ", "
- << "list count " << prog->list_count();
+ LOG(ERROR) << "DFA out of memory: "
+ << "pattern length " << pattern_.size() << ", "
+ << "program size " << prog->size() << ", "
+ << "list count " << prog->list_count() << ", "
+ << "bytemap range " << prog->bytemap_range();
// Fall back to NFA below.
skipped_test = true;
break;
@@ -771,9 +777,11 @@
&match, &dfa_failed, NULL)) {
if (dfa_failed) {
if (options_.log_errors())
- LOG(ERROR) << "DFA out of memory: size " << prog_->size() << ", "
- << "bytemap range " << prog_->bytemap_range() << ", "
- << "list count " << prog_->list_count();
+ LOG(ERROR) << "DFA out of memory: "
+ << "pattern length " << pattern_.size() << ", "
+ << "program size " << prog_->size() << ", "
+ << "list count " << prog_->list_count() << ", "
+ << "bytemap range " << prog_->bytemap_range();
// Fall back to NFA below.
skipped_test = true;
break;
diff --git a/re2/set.cc b/re2/set.cc
index 69af666..6c377aa 100644
--- a/re2/set.cc
+++ b/re2/set.cc
@@ -124,9 +124,10 @@
NULL, &dfa_failed, matches.get());
if (dfa_failed) {
if (options_.log_errors())
- LOG(ERROR) << "DFA out of memory: size " << prog_->size() << ", "
- << "bytemap range " << prog_->bytemap_range() << ", "
- << "list count " << prog_->list_count();
+ LOG(ERROR) << "DFA out of memory: "
+ << "program size " << prog->size() << ", "
+ << "list count " << prog->list_count() << ", "
+ << "bytemap range " << prog->bytemap_range();
if (error_info != NULL)
error_info->kind = kOutOfMemory;
return false;