Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: Re: PS4 is hosed in -dev-22
- X-seq: zsh-workers 10620
 
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
 
- To: zsh-workers@xxxxxxxxxxxxxx
 
- Subject: PATCH: Re: PS4 is hosed in -dev-22
 
- Date: Mon, 10 Apr 2000 11:09:04 +0200 (MET DST)
 
- In-reply-to: "Bart Schaefer"'s message of Mon, 10 Apr 2000 05:46:49 +0000
 
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
 
Bart Schaefer wrote:
> I have
> 
> PS4='+%1N:%i%1(_.:%_.): '
> 
> This used to display e.g.
> 
> zagzig<3> echo bar
> +zsh-3.1.6-dev-20:3: echo bar
> 
> Now it displays:
> 
> zagzig<3> echo bar
> +                                                                                :3: echo bar
> 
> (There's a huge amount of whitespace between the `+' and the `:', in case
> your mail viewer has wrapped the line.)
My fault. doshfunc() didn't reset scriptname correctly.
Bye
 Sven
Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.4
diff -u -r1.4 exec.c
--- Src/exec.c	2000/04/07 15:40:21	1.4
+++ Src/exec.c	2000/04/10 09:08:16
@@ -3249,7 +3249,7 @@
 {
     char **tab, **x, *oargv0;
     int oldzoptind, oldlastval, oldoptcind;
-    char saveopts[OPT_SIZE], *oldscriptname = NULL, *fname = dupstring(name);
+    char saveopts[OPT_SIZE], *oldscriptname = scriptname, *fname = dupstring(name);
     int obreaks;
     struct funcstack fstack;
 #ifdef MAX_FUNCTION_DEPTH
@@ -3267,10 +3267,8 @@
     starttrapscope();
 
     tab = pparams;
-    if (!(flags & PM_UNDEFINED)) {
-	oldscriptname = scriptname;
+    if (!(flags & PM_UNDEFINED))
 	scriptname = dupstring(name);
-    }
     oldzoptind = zoptind;
     zoptind = 1;
     oldoptcind = optcind;
@@ -3308,6 +3306,8 @@
     if(++funcdepth > MAX_FUNCTION_DEPTH)
     {
         zerr("maximum nested function level reached", NULL, 0);
+	scriptname = oldscriptname;
+	popheap();
 	return;
     }
 #endif
@@ -3328,6 +3328,7 @@
 	    if (!noreturnval)
 		lastval = 1;
 	    popheap();
+	    scriptname = oldscriptname;
 	    return;
 	}
 	prog = shf->funcdef;
@@ -3349,8 +3350,7 @@
     pparams = tab;
     optcind = oldoptcind;
     zoptind = oldzoptind;
-    if (oldscriptname)
-	scriptname = oldscriptname;
+    scriptname = oldscriptname;
 
     if (isset(LOCALOPTIONS)) {
 	/* restore all shell options except PRIVILEGED and RESTRICTED */
--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author