Hand pool-finished transpiler and patch jobs back through their pointer, not a &mut receiver - #37778
Open
robobun wants to merge 6 commits into
Open
Hand pool-finished transpiler and patch jobs back through their pointer, not a &mut receiver#37778robobun wants to merge 6 commits into
robobun wants to merge 6 commits into
Claude / Claude Code Review
completed
Aug 12, 2026 in 22m 40s
Code review found 1 potential issue
Found 1 candidates, confirmed 1. See review comments for details.
Details
| Severity | Count |
|---|---|
| 🔴 Important | 0 |
| 🟡 Nit | 1 |
| 🟣 Pre-existing | 0 |
| Severity | File:Line | Issue |
|---|---|---|
| 🟡 Nit | src/jsc/RuntimeTranspilerStore.rs:518-528 |
Same protector-vs-dealloc pattern remains in run_from_js_thread(&mut self) |
Annotations
Check warning on line 528 in src/jsc/RuntimeTranspilerStore.rs
claude / Claude Code Review
Same protector-vs-dealloc pattern remains in run_from_js_thread(&mut self)
`run_from_js_thread(&mut self)` (line 548) has the same protector-vs-dealloc shape this PR fixes in `dispatch_to_main_thread`: it calls `store.put(std::ptr::from_mut::<TranspilerJob>(self))`, and for the heap-spilled slots the new 96-import test creates, `HiveArrayFallback::put` Box-frees the receiver while `&mut self` is still a protected argument. The caller already holds the job as `*mut TranspilerJob` and invokes it via `(*job).run_from_js_thread()`, so the same `unsafe fn(this: *mut Self)`
Loading