From e51c9c17af51e4055efb5a2cc36739d1d7ae457f Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sun, 29 Jan 2017 08:30:14 -0800 Subject: 40453: signal handler safety for callers of patcompile(PAT_STATIC), which is not re-entrant. --- Src/Zle/complete.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Src/Zle/complete.c') diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c index 48fcd4751..49b338f29 100644 --- a/Src/Zle/complete.c +++ b/Src/Zle/complete.c @@ -896,6 +896,8 @@ do_comp_vars(int test, int na, char *sa, int nb, char *sb, int mod) int i, l = arrlen(compwords), t = 0, b = 0, e = l - 1; Patprog pp; + queue_signals(); /* Protect PAT_STATIC */ + i = compcurrent - 1; if (i < 0 || i >= l) return 0; @@ -930,6 +932,9 @@ do_comp_vars(int test, int na, char *sa, int nb, char *sb, int mod) t = 0; if (t && mod) restrict_range(b, e); + + unqueue_signals(); + return t; } case CVT_PRENUM: @@ -952,6 +957,8 @@ do_comp_vars(int test, int na, char *sa, int nb, char *sb, int mod) { Patprog pp; + queue_signals(); /* Protect PAT_STATIC */ + if (!na) return 0; @@ -1036,6 +1043,9 @@ do_comp_vars(int test, int na, char *sa, int nb, char *sb, int mod) if (mod) ignore_suffix(ol - (p - compsuffix)); } + + unqueue_signals(); + return 1; } } -- cgit 1.4.1