aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index 110b67b587f..94ad0607732 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1082,12 +1082,13 @@ usage: (while TEST BODY...) */)
1082static void 1082static void
1083with_delayed_message_display (struct atimer *timer) 1083with_delayed_message_display (struct atimer *timer)
1084{ 1084{
1085 message3 (timer->client_data); 1085 message3 (build_string (timer->client_data));
1086} 1086}
1087 1087
1088static void 1088static void
1089with_delayed_message_cancel (void *timer) 1089with_delayed_message_cancel (void *timer)
1090{ 1090{
1091 xfree (((struct atimer *) timer)->client_data);
1091 cancel_atimer (timer); 1092 cancel_atimer (timer);
1092} 1093}
1093 1094
@@ -1111,13 +1112,11 @@ is not displayed. */)
1111 struct timespec interval = dtotimespec (XFLOATINT (timeout)); 1112 struct timespec interval = dtotimespec (XFLOATINT (timeout));
1112 struct atimer *timer = start_atimer (ATIMER_RELATIVE, interval, 1113 struct atimer *timer = start_atimer (ATIMER_RELATIVE, interval,
1113 with_delayed_message_display, 1114 with_delayed_message_display,
1114 message); 1115 xstrdup (SSDATA (message)));
1115 record_unwind_protect_ptr (with_delayed_message_cancel, timer); 1116 record_unwind_protect_ptr (with_delayed_message_cancel, timer);
1116 1117
1117 Lisp_Object result = CALLN (Ffuncall, function); 1118 Lisp_Object result = CALLN (Ffuncall, function);
1118 1119
1119 cancel_atimer (timer);
1120
1121 return unbind_to (count, result); 1120 return unbind_to (count, result);
1122} 1121}
1123 1122