Skip to content

Commit 2cca514

Browse files
committed
Fix infinite loop after cpptools crashes. (#6604)
* Fix infinite loop after cpptools crashes: #6603
1 parent 2e33027 commit 2cca514

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

Extension/src/LanguageServer/clientCollection.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,11 @@ export class ClientCollection {
9191
}
9292

9393
public forEach(callback: (client: cpptools.Client) => void): void {
94-
this.languageClients.forEach(callback);
94+
// Copy this.languageClients to languageClients to avoid an infinite foreach loop
95+
// when callback modifies this.languageClients (e.g. when cpptools crashes).
96+
const languageClients: cpptools.Client[] = [];
97+
this.languageClients.forEach(client => languageClients.push(client));
98+
languageClients.forEach(callback);
9599
}
96100

97101
public checkOwnership(client: cpptools.Client, document: vscode.TextDocument): boolean {

0 commit comments

Comments
 (0)