about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLaurențiu Nicola <lnicola@dend.ro>2021-10-02 10:07:50 +0300
committerLaurențiu Nicola <lnicola@dend.ro>2021-10-02 10:07:50 +0300
commit502fa1755a50dd340c888500aebc2cb1a8dbc6bd (patch)
tree888cca485b75bd0163e3ed96766f9052766329ad
parent2c7b50217ee864a5a529af38aae8ccf14ab60888 (diff)
downloadrust-502fa1755a50dd340c888500aebc2cb1a8dbc6bd.tar.gz
rust-502fa1755a50dd340c888500aebc2cb1a8dbc6bd.zip
Remove temporary file on exception
-rw-r--r--editors/code/src/main.ts31
1 files changed, 17 insertions, 14 deletions
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 72eca0fcc21..f69b7fdf566 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -287,20 +287,23 @@ async function patchelf(dest: vscode.Uri): Promise<void> {
             `;
             const origFile = vscode.Uri.file(dest.fsPath + "-orig");
             await vscode.workspace.fs.rename(dest, origFile, { overwrite: true });
-            progress.report({ message: "Patching executable", increment: 20 });
-            await new Promise((resolve, reject) => {
-                const handle = exec(`nix-build -E - --argstr srcStr '${origFile.fsPath}' -o '${dest.fsPath}'`,
-                    (err, stdout, stderr) => {
-                        if (err != null) {
-                            reject(Error(stderr));
-                        } else {
-                            resolve(stdout);
-                        }
-                    });
-                handle.stdin?.write(expression);
-                handle.stdin?.end();
-            });
-            await vscode.workspace.fs.delete(origFile);
+            try {
+                progress.report({ message: "Patching executable", increment: 20 });
+                await new Promise((resolve, reject) => {
+                    const handle = exec(`nix-build -E - --argstr srcStr '${origFile.fsPath}' -o '${dest.fsPath}'`,
+                        (err, stdout, stderr) => {
+                            if (err != null) {
+                                reject(Error(stderr));
+                            } else {
+                                resolve(stdout);
+                            }
+                        });
+                    handle.stdin?.write(expression);
+                    handle.stdin?.end();
+                });
+            } finally {
+                await vscode.workspace.fs.delete(origFile);
+            }
         }
     );
 }