From d76e7130cba9f0ca05940abafe4fd1a41464aa83 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 28 Jun 2024 14:52:39 +0100 Subject: [PATCH] fix(phoenix): Gracefully handle completing a non-existent path filesystem.readdir() can throw, which previously would crash Phoenix and leave the terminal unresponsive. This change makes it return no results instead. --- .../src/puter-shell/completers/FileCompleter.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/phoenix/src/puter-shell/completers/FileCompleter.js b/packages/phoenix/src/puter-shell/completers/FileCompleter.js index ea5df34c2..805024c61 100644 --- a/packages/phoenix/src/puter-shell/completers/FileCompleter.js +++ b/packages/phoenix/src/puter-shell/completers/FileCompleter.js @@ -33,12 +33,17 @@ export class FileCompleter { const completions = []; - const result = await filesystem.readdir(dir); - if ( result === undefined ) { - return []; + let dir_entries; + try { + dir_entries = await filesystem.readdir(dir); + } catch (e) { + // Ignored } - for ( const item of result ) { + if ( dir_entries === undefined ) + return []; + + for ( const item of dir_entries ) { if ( item.name.startsWith(base) ) { completions.push(item.name.slice(base.length)); }