diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2001-01-16 13:44:18 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2001-01-16 13:44:18 +0000 |
commit | 757168e2c8af374436108266cc3cfd32a946a590 (patch) | |
tree | 293929274f50de8733f00c4ae561a85e9c5fc16f /Src/Zle/complist.c | |
parent | 052316fea3b74599de04fb3990a444b0ba08b04b (diff) | |
download | zsh-757168e2c8af374436108266cc3cfd32a946a590.tar.gz zsh-757168e2c8af374436108266cc3cfd32a946a590.tar.xz zsh-757168e2c8af374436108266cc3cfd32a946a590.zip |
remove 13108 (trap queues); replace with signal queueing to ensure that user signal handlers are only executed when it is safe to run them (13365)
Diffstat (limited to 'Src/Zle/complist.c')
-rw-r--r-- | Src/Zle/complist.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index 6982dc774..714719d62 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -340,6 +340,7 @@ getcols(Listcols c) int i, l; max_caplen = lr_caplen = 0; + queue_signals(); if (!(s = getsparam("ZLS_COLORS")) && !(s = getsparam("ZLS_COLOURS"))) { for (i = 0; i < NUM_COLS; i++) @@ -356,6 +357,7 @@ getcols(Listcols c) if ((max_caplen = strlen(c->files[COL_MA]->col)) < (l = strlen(c->files[COL_EC]->col))) max_caplen = l; + unqueue_signals(); return; } /* We have one of the parameters, use it. */ @@ -366,6 +368,7 @@ getcols(Listcols c) s++; else s = getcoldef(c, s); + unqueue_signals(); /* Use default values for those that aren't set explicitly. */ for (i = 0; i < NUM_COLS; i++) { @@ -1528,8 +1531,10 @@ complistmatches(Hookdef dummy, Chdata dat) mscroll = 0; mlistp = NULL; + queue_signals(); if (mselect >= 0 || mlbeg >= 0 || - (mlistp = getsparam("LISTPROMPT"))) { + (mlistp = dupstring(getsparam("LISTPROMPT")))) { + unqueue_signals(); if (mlistp && !*mlistp) mlistp = "%SAt %p: Hit TAB for more, or the character to insert%s"; trashzle(); @@ -1545,6 +1550,7 @@ complistmatches(Hookdef dummy, Chdata dat) minfo.asked = (listdat.nlines + nlnct <= lines); } } else { + unqueue_signals(); mlistp = NULL; if (asklist()) { amatches = oamatches; @@ -1641,6 +1647,7 @@ domenuselect(Hookdef dummy, Chdata dat) int nolist = 0; char *s; + queue_signals(); if (fdat || (dummy && (!(s = getsparam("MENUSELECT")) || (dat && dat->num < atoi(s))))) { if (fdat) { @@ -1648,6 +1655,7 @@ domenuselect(Hookdef dummy, Chdata dat) fdat->num = dat->num; fdat->nmesg = dat->nmesg; } + unqueue_signals(); return 0; } if ((s = getsparam("MENUSCROLL"))) { @@ -1659,6 +1667,7 @@ domenuselect(Hookdef dummy, Chdata dat) } if ((mstatus = dupstring(getsparam("MENUPROMPT"))) && !*mstatus) mstatus = "%SScrolling active: current selection at %p%s"; + unqueue_signals(); mhasstat = (mstatus && *mstatus); fdat = dat; selectlocalmap(mskeymap); |