diff options
| author | 2022-10-21 01:01:31 -0700 | |
|---|---|---|
| committer | 2022-10-21 01:07:49 -0700 | |
| commit | c940f00e2d49ea37ac69589a9a160a43df91eeb6 (patch) | |
| tree | 68649527b20bc660e08d28e3a679061237c09f43 /src | |
| parent | 97ccbc189a52fe2e497f2ad20ebf86a83b758d14 (diff) | |
| download | bun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.tar.gz bun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.tar.zst bun-c940f00e2d49ea37ac69589a9a160a43df91eeb6.zip | |
Fix infinite loop
Diffstat (limited to 'src')
| -rw-r--r-- | src/js_ast.zig | 16 |
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 ..]; |
