From 963149253482db745a67aea8d4c9f5e8c9b49b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 25 Nov 2024 08:57:13 +0100 Subject: [PATCH] Fix catching all exceptions from std.evalScript In case of a syntax error, the function throws syncrnonously. I'll admit I wondered when Promise.try would be useful... I guess I know now! Fixes: https://github.com/quickjs-ng/quickjs/issues/720#issuecomment-2495961142 --- gen/repl.c | Bin 143185 -> 143246 bytes repl.js | 43 +++++++++++++++++++++---------------------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/gen/repl.c b/gen/repl.c index 67f4d65ad3b45d80ce76d5a6fb48da0769f4d7b2..80bf563d83b51c55a2598614df951cf6f44d7f07 100644 GIT binary patch delta 9437 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 Y+_eTlVjrmu)4TkIjz9HM+jyDsf77sL@c;k- diff --git a/repl.js b/repl.js index 00dd52b..d7e302e 100644 --- a/repl.js +++ b/repl.js @@ -1,6 +1,6 @@ /* * QuickJS Read Eval Print Loop - * + * * Copyright (c) 2017-2020 Fabrice Bellard * Copyright (c) 2017-2020 Charlie Gordon * @@ -31,7 +31,7 @@ import * as bjson from "qjs:bjson"; g.bjson = bjson; g.os = os; g.std = std; - + /* close global objects */ var Object = g.Object; var String = g.String; @@ -149,12 +149,12 @@ import * as bjson from "qjs:bjson"; var term_read_buf; var term_width; /* current X position of the cursor in the terminal */ - var term_cursor_x = 0; - + var term_cursor_x = 0; + function termInit() { var tab; term_fd = std.in.fileno(); - + /* get the terminal size */ term_width = 80; if (os.isatty(term_fd)) { @@ -181,14 +181,14 @@ import * as bjson from "qjs:bjson"; /* send Ctrl-C to readline */ handle_byte(3); } - + function term_read_handler() { var l, i; l = os.read(term_fd, term_read_buf.buffer, 0, term_read_buf.length); for(i = 0; i < l; i++) handle_byte(term_read_buf[i]); } - + function handle_byte(c) { if (!utf8) { handle_char(c); @@ -206,12 +206,12 @@ import * as bjson from "qjs:bjson"; handle_char(c); } } - + function is_alpha(c) { return typeof c === "string" && ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); } - + function is_digit(c) { return typeof c === "string" && (c >= '0' && c <= '9'); } @@ -243,7 +243,7 @@ import * as bjson from "qjs:bjson"; d = c.codePointAt(0); /* can be NaN if empty string */ return d >= 0xdc00 && d < 0xe000; } - + function is_balanced(a, b) { switch (a + b) { case "()": @@ -282,7 +282,7 @@ import * as bjson from "qjs:bjson"; } else { l = Math.min(term_width - 1 - term_cursor_x, delta); print_csi(l, "C"); /* right */ - delta -= l; + delta -= l; term_cursor_x += l; } } @@ -410,7 +410,7 @@ import * as bjson from "qjs:bjson"; function backward_word() { cursor_pos = skip_word_backward(cursor_pos); - } + } function clear_screen() { directives["clear"](); @@ -596,7 +596,7 @@ import * as bjson from "qjs:bjson"; readline_print_prompt(); } } - + function reset() { cmd = ""; cursor_pos = 0; @@ -762,7 +762,7 @@ import * as bjson from "qjs:bjson"; readline_print_prompt(); } } - + var commands = { /* command table */ "\x01": beginning_of_line, /* ^A - bol */ "\x02": backward_char, /* ^B - backward-char */ @@ -840,9 +840,9 @@ import * as bjson from "qjs:bjson"; cursor_pos = cmd.length; history_index = history.length; readline_cb = cb; - + prompt = pstate; - + if (mexpr) { prompt += dupstr(" ", plen - prompt.length); prompt += ps2; @@ -928,7 +928,7 @@ import * as bjson from "qjs:bjson"; } else { alert(); /* beep! */ } - + cursor_pos = (cursor_pos < 0) ? 0 : (cursor_pos > cmd.length) ? cmd.length : cursor_pos; update(); @@ -1523,7 +1523,7 @@ import * as bjson from "qjs:bjson"; function cmd_readline_start() { readline_start(dupstr(" ", level), readline_handle_cmd); } - + function readline_handle_cmd(expr) { if (!handle_cmd(expr)) { cmd_readline_start(); @@ -1548,7 +1548,7 @@ import * as bjson from "qjs:bjson"; return false; } mexpr = ""; - + eval_and_print(expr); return true; @@ -1561,8 +1561,7 @@ import * as bjson from "qjs:bjson"; expr = '"use strict"; void 0;' + expr; eval_start_time = os.now(); /* eval as a script */ - result = std.evalScript(expr, { backtrace_barrier: true, async: true }); - /* result is a promise */ + result = Promise.try(std.evalScript, expr, { backtrace_barrier: true, async: true }); result.then(print_eval_result, print_eval_error); } @@ -1601,7 +1600,7 @@ import * as bjson from "qjs:bjson"; function handle_cmd_end() { level = 0; - + /* run the garbage collector after each command */ std.gc();