diff --git a/bin/sim.m b/bin/sim.m index 73ecde23..2e6c7470 100644 --- a/bin/sim.m +++ b/bin/sim.m @@ -214,18 +214,20 @@ rl_set_prompt(const char *prompt) static void refresh_repl_prompt(NSString *top_level, bool clear) { - static int previous_prompt_length = 0; - rl_set_prompt([current_repl_prompt(top_level) UTF8String]); - if (clear) { - putchar('\r'); - for (int i = 0; i < previous_prompt_length; i++) { - putchar(' '); - } - putchar('\r'); - //printf("\n\033[F\033[J"); // Clear. - rl_forced_update_display(); - } - previous_prompt_length = strlen(rl_prompt); + dispatch_async(dispatch_get_main_queue(), ^{ + static int previous_prompt_length = 0; + rl_set_prompt([current_repl_prompt(top_level) UTF8String]); + if (clear) { + putchar('\r'); + for (int i = 0; i < previous_prompt_length; i++) { + putchar(' '); + } + putchar('\r'); + //printf("\n\033[F\033[J"); // Clear. + rl_forced_update_display(); + } + previous_prompt_length = strlen(rl_prompt); + }); } static void