Files
bun.sh/src/semver
Marko Vejnovic 3bc78598c6 bug(SlicedString.zig): Fix incorrect assertion in SlicedString.sub (#23934)
### What does this PR do?

Fixes a small bug I found in https://github.com/oven-sh/bun/pull/23107
which caused `SlicedString` not to correctly provide us with subslices.

This would have been a **killer** use-case for the interval utility we
decided to reject in https://github.com/oven-sh/bun/pull/23882. Consider
how nice the code could've been:

```zig
pub inline fn sub(this: SlicedString, input: string) SlicedString {
    const buf_r = bun.math.interval.fromSlice(this.buf);
    const inp_r = bun.math.interval.fromSlice(this.input);

    if (Environment.allow_assert) {
        if (!buf_r.superset(inp_r)) {
            bun.Output.panic("SlicedString.sub input [{}, {}) is not a substring of the " ++
                "slice [{}, {})", .{ start_i, end_i, start_buf, end_buf });
        }
    }
    return SlicedString{ .buf = this.buf, .slice = input };
}
```

That's a lot more readable than the middle-school algebra we have here,
but here we are.

### How did you verify your code works?

CI

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-10-21 17:54:44 -07:00
..