45 lines
995 B
Plaintext
45 lines
995 B
Plaintext
--- src/cmd/ksh93/sh/init.c
|
|
+++ src/cmd/ksh93/sh/init.c 2012-03-14 12:40:34.986162029 +0000
|
|
@@ -508,24 +508,26 @@ static void put_cdpath(register Namval_t
|
|
static void put_ifs(register Namval_t* np,const char *val,int flags,Namfun_t *fp)
|
|
{
|
|
register struct ifs *ip = (struct ifs*)fp;
|
|
+ Namfun_t *xp;
|
|
ip->ifsnp = 0;
|
|
- if(!val)
|
|
- {
|
|
- fp = nv_stack(np, NIL(Namfun_t*));
|
|
- if(fp && !fp->nofree)
|
|
- {
|
|
- free((void*)fp);
|
|
- fp = 0;
|
|
- }
|
|
- }
|
|
- if(val != np->nvalue.cp)
|
|
- nv_putv(np, val, flags, fp);
|
|
- if(!val)
|
|
+ if(val)
|
|
{
|
|
- if(fp)
|
|
- fp->next = np->nvfun;
|
|
- np->nvfun = fp;
|
|
+ if(val != np->nvalue.cp)
|
|
+ nv_putv(np, val, flags, fp);
|
|
+ return;
|
|
}
|
|
+ if((xp = nv_stack(np, NIL(Namfun_t*))) != fp)
|
|
+ sfprintf(sfstderr, "BUG in %s:%s(%d) xp(%p) != fp(%p)\n",
|
|
+ __FILE__, __FUNCTION__, __LINE__, xp, fp);
|
|
+ if(fp && !fp->nofree)
|
|
+ {
|
|
+ free((void*)fp);
|
|
+ fp = NIL(Namfun_t*);
|
|
+ }
|
|
+ nv_putv(np, NIL(char*), flags, fp);
|
|
+ if(fp)
|
|
+ fp->next = np->nvfun;
|
|
+ np->nvfun = fp;
|
|
}
|
|
|
|
/*
|