always set the libedit prompt in main thread, to avoid memory race condition crasher

This commit is contained in:
Laurent Sansonetti
2013-08-10 18:06:07 +02:00
parent 6d849e6563
commit 8cc0865f9d

View File

@@ -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