Blame 0001-string-Fix-crash-with-_GLIBCXX_ASSERTIONS.patch

Igor Gnatenko 2f6003
From 9d4e460b298a39ee2be2443af97413e7063fa8d2 Mon Sep 17 00:00:00 2001
Igor Gnatenko 2f6003
From: Fabian Homborg <FHomborg@gmail.com>
Igor Gnatenko 2f6003
Date: Fri, 4 Jan 2019 08:45:53 +0100
Igor Gnatenko 2f6003
Subject: [PATCH] string: Fix crash with _GLIBCXX_ASSERTIONS
Igor Gnatenko 2f6003
Igor Gnatenko 2f6003
This asserted because we accessed wcstring::front() when it was empty.
Igor Gnatenko 2f6003
Igor Gnatenko 2f6003
Instead, check explicitly for it being empty before.
Igor Gnatenko 2f6003
Igor Gnatenko 2f6003
Fixes #5479
Igor Gnatenko 2f6003
---
Igor Gnatenko 2f6003
 src/builtin_string.cpp | 10 +++++++---
Igor Gnatenko 2f6003
 1 file changed, 7 insertions(+), 3 deletions(-)
Igor Gnatenko 2f6003
Igor Gnatenko 2f6003
diff --git a/src/builtin_string.cpp b/src/builtin_string.cpp
Igor Gnatenko 2f6003
index 6e810a32..bbc7e40c 100644
Igor Gnatenko 2f6003
--- a/src/builtin_string.cpp
Igor Gnatenko 2f6003
+++ b/src/builtin_string.cpp
Igor Gnatenko 2f6003
@@ -622,9 +622,13 @@ class wildcard_matcher_t : public string_matcher_t {
Igor Gnatenko 2f6003
             }
Igor Gnatenko 2f6003
         }
Igor Gnatenko 2f6003
         if (opts.entire) {
Igor Gnatenko 2f6003
-            // If the pattern is empty, this becomes one ANY_STRING that matches everything.
Igor Gnatenko 2f6003
-            if (wcpattern.front() != ANY_STRING) wcpattern.insert(0, 1, ANY_STRING);
Igor Gnatenko 2f6003
-            if (wcpattern.back() != ANY_STRING) wcpattern.push_back(ANY_STRING);
Igor Gnatenko 2f6003
+            if (!wcpattern.empty()) {
Igor Gnatenko 2f6003
+                if (wcpattern.front() != ANY_STRING) wcpattern.insert(0, 1, ANY_STRING);
Igor Gnatenko 2f6003
+                if (wcpattern.back() != ANY_STRING) wcpattern.push_back(ANY_STRING);
Igor Gnatenko 2f6003
+            } else {
Igor Gnatenko 2f6003
+                // If the pattern is empty, this becomes one ANY_STRING that matches everything.
Igor Gnatenko 2f6003
+                wcpattern.push_back(ANY_STRING);
Igor Gnatenko 2f6003
+            }
Igor Gnatenko 2f6003
         }
Igor Gnatenko 2f6003
     }
Igor Gnatenko 2f6003
 
Igor Gnatenko 2f6003
-- 
Igor Gnatenko 2f6003
2.20.1
Igor Gnatenko 2f6003