Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [BUG] REPORTTIME parsed as 0 with error in zle widget



On Mon, 12 Feb 2018 10:05:08 +0100
Daniel Hahler <genml+zsh-workers@xxxxxxxxxx> wrote:
> Given the following zle widget:
> getintvalue in should_report_time returns 0, although getstrvalue(v) is "5"!
> This is caused by errflag being set in matheval, which makes it return 0!
> And this gets caused by "exit 130" in __fsel.

This is probably too deep in jobs.c for anyone to have noticed it needed
protection like a lot of other functions already have.

pws

diff --git a/Src/jobs.c b/Src/jobs.c
index fc5bfac..503618f 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -925,6 +925,7 @@ should_report_time(Job j)
     struct value vbuf;
     Value v;
     char *s = "REPORTTIME";
+    int save_errflag = errflag;
     zlong reporttime = -1;
 #ifdef HAVE_GETRUSAGE
     char *sm = "REPORTMEMORY";
@@ -936,12 +937,14 @@ should_report_time(Job j)
 	return 1;
 
     queue_signals();
+    errflag = 0;
     if ((v = getvalue(&vbuf, &s, 0)))
 	reporttime = getintvalue(v);
 #ifdef HAVE_GETRUSAGE
     if ((v = getvalue(&vbuf, &sm, 0)))
 	reportmemory = getintvalue(v);
 #endif
+    errflag = save_errflag;
     unqueue_signals();
     if (reporttime < 0
 #ifdef HAVE_GETRUSAGE



Messages sorted by: Reverse Date, Date, Thread, Author