From cf162aee2b9c574cb0f4095720a19f4efceee22b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 23 Dec 2012 13:35:37 +0100 Subject: [PATCH] * nsfns.m (Fns_do_applescript): Run event loop until script has been executed. (ns_run_ascript): Chech as_script for nil, set to nil after executing script. Fixes: debbugs:12969 --- src/ChangeLog | 7 +++++++ src/nsfns.m | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index f8f0b82d3da..2723d8f92ec 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-12-23 Jan Djärv + + * nsfns.m (Fns_do_applescript): Run event loop until script has + been executed (Bug#12969). + (ns_run_ascript): Chech as_script for nil, set to nil after + executing script. + 2012-12-22 Martin Rudalics * window.c (Fselect_window): Reword doc-string (Bug#13248). diff --git a/src/nsfns.m b/src/nsfns.m index 428cfcb9a10..7b70793258b 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -2106,7 +2106,9 @@ ns_do_applescript (Lisp_Object script, Lisp_Object *result) void ns_run_ascript (void) { - as_status = ns_do_applescript (as_script, as_result); + if (! NILP (as_script)) + as_status = ns_do_applescript (as_script, as_result); + as_script = Qnil; } DEFUN ("ns-do-applescript", Fns_do_applescript, Sns_do_applescript, 1, 1, 0, @@ -2143,11 +2145,14 @@ In case the execution fails, an error is signaled. */) data2: NSAPP_DATA2_RUNASSCRIPT]; [NSApp postEvent: nxev atStart: NO]; - [NSApp run]; + + // If there are other events, the event loop may exit. Keep running + // until the script has been handeled. */ + while (! NILP (as_script)) + [NSApp run]; status = as_status; as_status = 0; - as_script = Qnil; as_result = 0; unblock_input (); if (status == 0) -- 2.39.2