mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
fix: clear lastUsedTerminal in dispose() to prevent memory leak
- Added cleanup of lastUsedTerminal property in Task.dispose() method - Prevents terminal references from being retained after task disposal - Added test to verify proper cleanup on disposal
This commit is contained in:
parent
4108f30ba6
commit
44006a2d50
2 changed files with 23 additions and 0 deletions
|
|
@ -1453,6 +1453,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
|
|||
try {
|
||||
// Release any terminals associated with this task.
|
||||
TerminalRegistry.releaseTerminalsForTask(this.taskId)
|
||||
// Clear the lastUsedTerminal reference to prevent memory leaks
|
||||
this.lastUsedTerminal = undefined
|
||||
} catch (error) {
|
||||
console.error("Error releasing terminals:", error)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,4 +198,25 @@ describe("Task dispose method", () => {
|
|||
// Verify total listener count is 0
|
||||
expect(task.eventNames().length).toBe(0)
|
||||
})
|
||||
|
||||
test("should clear lastUsedTerminal reference to prevent memory leaks", () => {
|
||||
// Mock a terminal object
|
||||
const mockTerminal = {
|
||||
id: "test-terminal-id",
|
||||
name: "Test Terminal",
|
||||
dispose: vi.fn(),
|
||||
}
|
||||
|
||||
// Set lastUsedTerminal on the task
|
||||
;(task as any).lastUsedTerminal = mockTerminal
|
||||
|
||||
// Verify it's set
|
||||
expect((task as any).lastUsedTerminal).toBe(mockTerminal)
|
||||
|
||||
// Call dispose
|
||||
task.dispose()
|
||||
|
||||
// Verify lastUsedTerminal is cleared
|
||||
expect((task as any).lastUsedTerminal).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue