summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-05-17 22:49:02 +0100
committerAndrea Corallo <akrl@sdf.org>2020-05-17 22:49:02 +0100
commitcd4ef52c8673a76c6fcb0efd7d2c74778522038c (patch)
treeb3d4b99c92ddccc02a2f3ee846b11419dde1d892 /src
parent9e9421c7eecd74c9f163253ab760044fca53f26b (diff)
parentabec255c024938a40fa3c9730f602c0351e5877d (diff)
Merge remote-tracking branch 'savannah/master' into HEAD
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c4
-rw-r--r--src/lisp.h10
-rw-r--r--src/xdisp.c2
-rw-r--r--src/xfns.c8
4 files changed, 16 insertions, 8 deletions
diff --git a/src/alloc.c b/src/alloc.c
index f2b80fac882..d6ba4d97905 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4952,12 +4952,10 @@ typedef union
#ifdef HAVE___BUILTIN_UNWIND_INIT
# define SET_STACK_TOP_ADDRESS(p) \
stacktop_sentry sentry; \
- __builtin_unwind_init (); \
*(p) = NEAR_STACK_TOP (&sentry)
#else
# define SET_STACK_TOP_ADDRESS(p) \
stacktop_sentry sentry; \
- __builtin_unwind_init (); \
test_setjmp (); \
sys_setjmp (sentry.j); \
*(p) = NEAR_STACK_TOP (&sentry + (stack_bottom < &sentry.c))
@@ -5033,7 +5031,7 @@ mark_stack (char const *bottom, char const *end)
from FUNC. */
NO_INLINE void
-flush_stack_call_func (void (*func) (void *arg), void *arg)
+flush_stack_call_func1 (void (*func) (void *arg), void *arg)
{
void *end;
struct thread_state *self = current_thread;
diff --git a/src/lisp.h b/src/lisp.h
index 66a86ddadfa..893e278afe0 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3819,7 +3819,15 @@ extern void alloc_unexec_pre (void);
extern void alloc_unexec_post (void);
extern void mark_maybe_objects (Lisp_Object const *, ptrdiff_t);
extern void mark_stack (char const *, char const *);
-extern void flush_stack_call_func (void (*func) (void *arg), void *arg);
+extern void flush_stack_call_func1 (void (*func) (void *arg), void *arg);
+
+INLINE void
+flush_stack_call_func (void (*func) (void *arg), void *arg)
+{
+ __builtin_unwind_init ();
+ flush_stack_call_func1 (func, arg);
+}
+
extern void garbage_collect (void);
extern void maybe_garbage_collect (void);
extern const char *pending_malloc_warning;
diff --git a/src/xdisp.c b/src/xdisp.c
index d65bb388699..cf15f579b58 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5120,7 +5120,7 @@ handle_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
if (CONSP (spec) && EQ (XCAR (spec), Qdisable_eval))
{
enable_eval = false;
- spec = XCAR (XCDR (spec));
+ spec = CONSP (XCDR (spec)) ? XCAR (XCDR (spec)) : Qnil;
}
if (CONSP (spec)
diff --git a/src/xfns.c b/src/xfns.c
index 1f381e2a8b0..2ab5080d977 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -6738,9 +6738,11 @@ x_hide_tip (bool delete)
}
}
- /* Reset tip_last_frame, it will be reassigned when showing the
- next GTK+ system tooltip. */
- tip_last_frame = Qnil;
+ /* When using GTK+ system tooltips (compare Bug#41200) reset
+ tip_last_frame. It will be reassigned when showing the next
+ GTK+ system tooltip. */
+ if (x_gtk_use_system_tooltips)
+ tip_last_frame = Qnil;
/* Now look whether there's an Emacs tip around. */
if (FRAMEP (tip_frame))