## Summary
- Fixes crash when running shell commands with variable assignments
piped to other commands
- Resolves#15714
## Problem
The shell was crashing with "Invalid tag" error when running commands
like:
```bash
bun exec "FOO=bar BAR=baz | echo hi"
```
## Root Cause
In `Pipeline.zig`, the `cmds` array was allocated with the wrong size:
- It used `node.items.len` (which includes assignments)
- But only filled entries for actual commands (assignments are skipped
in pipelines)
- This left uninitialized memory that caused crashes when accessed
## Solution
Changed the allocation to use the correct `cmd_count` instead of
`node.items.len`:
```zig
// Before
this.cmds = if (cmd_count >= 1) bun.handleOom(this.base.allocator().alloc(CmdOrResult, this.node.items.len)) else null;
// After
this.cmds = if (cmd_count >= 1) bun.handleOom(this.base.allocator().alloc(CmdOrResult, cmd_count)) else null;
```
## Test plan
✅ Added comprehensive regression test in
`test/regression/issue/15714.test.ts` that:
- Tests the exact case from the issue
- Tests multiple assignments
- Tests single assignment
- Tests assignments in middle of pipeline
- Verified test fails on main branch (exit code 133 = SIGTRAP)
- Verified test passes with fix
🤖 Generated with [Claude Code](https://claude.ai/code)
---------
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
### What does this PR do?
### How did you verify your code works?
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
### How did you verify your code works?
---------
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
### How did you verify your code works?
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
- Fixes `$.braces(...)` not working properly on non-ascii inputs
- Switches braces code to use `SmallList` to support more deeply nested
brace expansion
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
Fixes a crash related to pipelines
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
* Do not run tests outside test scope
* Fix tests
* Fix type errors and remove potentially precarious uses of unreachable
* yoops
* Remove all instances of "Ruh roh"
---------
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
* fix#9823
* subshell
* Refactor a bit and add a lot of tests
* delete random code
* make tests pass on windows
* Cleanup
* add sharp test
* Resolve comments
---------
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
* shell: organize imports
* shell: dont allocate when printing errors
* shell: implement $0, $1, argv accessors
* add more tests
* oops need this commit too
* make these logs listen to silencing logs
* expand switch else statements
* align behavior with bash
* this isnt referenced anywhere
* add missing test file
* add another test
* revert this change
* cache utf8 converted version of positionals
* rebase fixes
---------
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com>
* rename conditional -> binary
* Parse if clauses
* `if` works
* Conditional expressions
* Support If clause condition and branches multi-statements
* cond expr tests
* more
* Fix parse tests
* `&` commands
* clean up
* Make it compile for windows
* Fix test
* Remove If/Else/Elif/Then/Fi tokens
* Fix parsing ambiguities
* Resolve some comments
* More tests fix bugs
* Fix parsing and add more tests ported from GNU bash
* Fix `&`on left side of `&&` error message
* leak test fix hopefully
* todo some tests because `wait` is not implemented
* Disable background commands for now
* Resolve additional comments
* Fix merge conflicts
* Fix broken tests from merge
* Add `==` and `!=` and fix parsing bug
* wow
* fix 09401 test failing... forgot to update `this.inlined.len`
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>