aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-21 01:01:31 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-21 01:07:49 -0700
commitc940f00e2d49ea37ac69589a9a160a43df91eeb6 (patch)
tree68649527b20bc660e08d28e3a679061237c09f43
parent97ccbc189a52fe2e497f2ad20ebf86a83b758d14 (diff)
downloadbun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.tar.gz
bun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.tar.zst
bun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.zip
Fix infinite loop
-rw-r--r--src/js_ast.zig16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/js_ast.zig b/src/js_ast.zig
index f3d941251..452f6044c 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -1853,11 +1853,21 @@ pub const E = struct {
var pat = this.pattern();
while (pat.len > 0) {
const start = strings.indexOfChar(pat, '?') orelse return false;
- if (start == 0) return false;
+ if (start == 0) {
+ pat = pat[1..];
+ continue;
+ }
const l_paren = pat[start - 1];
- if (l_paren != '(' or pat.len < start + 1) return false;
+ if (start > 1 and pat[start - 2] == '\\') {
+ pat = pat[start..];
+ continue;
+ }
+ if (l_paren != '(' or pat.len < start + 1) {
+ pat = pat[start..];
+ continue;
+ }
const op = pat[start + 1];
- if (op == '<' or op == '=' or op == '!') {
+ if (op == '<') {
return true;
}
pat = pat[start + 1 ..];