diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | Completion/Base/Core/_main_complete | 2 | ||||
-rw-r--r-- | Src/Modules/zselect.c | 2 | ||||
-rw-r--r-- | Src/Zle/complist.c | 12 |
4 files changed, 17 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index 94cb172b2..284029883 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-10-29 Barton E. Schaefer <schaefer@zsh.org> + + * 33566: Jun T.: Src/Modules/zselect.c: quash compiler warning + + * 33563: Completion/Base/Core/_main_complete, Src/Zle/complist.c: + fix thinko in status message for INT/QUIT signals; check errflag + in output loops so that unexpectedly long completion listings can + be interrupted + 2014-10-29 Oliver Kiddle <opk@zsh.org> * 33528: Src/Zle/iwidgets.list, Src/Zle/zle_vi.c, diff --git a/Completion/Base/Core/_main_complete b/Completion/Base/Core/_main_complete index e881ea6a1..fcd63664e 100644 --- a/Completion/Base/Core/_main_complete +++ b/Completion/Base/Core/_main_complete @@ -128,7 +128,7 @@ _completer_num=1 # We assume localtraps to be in effect here ... integer SECONDS=0 -trap 'zle -M "Killed by signal in ${funcstack[0]} after ${SECONDS}s"; +trap 'zle -M "Killed by signal in ${funcstack[1]} after ${SECONDS}s"; zle -R; return 130' INT QUIT # Call the pre-functions. diff --git a/Src/Modules/zselect.c b/Src/Modules/zselect.c index c02074646..30a3f51a5 100644 --- a/Src/Modules/zselect.c +++ b/Src/Modules/zselect.c @@ -251,7 +251,7 @@ bin_zselect(char *nam, char **args, UNUSED(Options ops), UNUSED(int func)) outptr = outdata = (char **)zalloc((fdcount+1)*sizeof(char *)); while (nonempty(fdlist)) *outptr++ = getlinknode(fdlist); - *outptr = '\0'; + *outptr = NULL; /* and store in array parameter */ if (outhash) sethparam(outhash, outdata); diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index 5e5ba9f20..2e1a5273c 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -1375,7 +1375,7 @@ compprintlist(int showall) tcout(TCCLEAREOD); g = ((lasttype && lastg) ? lastg : amatches); - while (g) { + while (g && !errflag) { char **pp = g->ylist; #ifdef ZSH_HEAP_DEBUG @@ -1389,7 +1389,7 @@ compprintlist(int showall) ml = lastml; lastused = 1; } - while (*e) { + while (*e && !errflag) { if (((*e)->count || (*e)->always) && (!listdat.onlyexpl || (listdat.onlyexpl & ((*e)->always > 0 ? 2 : 1)))) { @@ -1469,11 +1469,11 @@ compprintlist(int showall) nl = nc = g->lins; - while (n && nl--) { + while (n && nl-- && !errflag) { i = g->cols; mc = 0; pq = pp; - while (n && i--) { + while (n && i-- && !errflag) { if (pq - g->ylist >= g->lcount) break; if (compzputs(*pq, mscroll)) @@ -1582,7 +1582,7 @@ compprintlist(int showall) } else p = skipnolist(g->matches, showall); - while (n && nl--) { + while (n && nl-- && !errflag) { if (!lasttype && ml >= mlbeg) { lasttype = 3; lastg = g; @@ -1596,7 +1596,7 @@ compprintlist(int showall) i = g->cols; mc = 0; q = p; - while (n && i--) { + while (n && i-- && !errflag) { wid = (g->widths ? g->widths[mc] : g->width); if (!(m = *q)) { if (clprintm(g, NULL, mc, ml, (!i), wid)) |