mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
src/cmd/ksh93/{sh/path.c,include/shell.h}: - The sh.defpathlist variable is never set once, which makes every use of this variable unnecessary (as it's always null). This commit removes sh.defpathlist while also fixing a possible memory leak (there was another location where defpathinit() was invoked without saving the returned pointer, causing a memory leak).
This commit is contained in:
parent
4886463bb6
commit
5bd18322e0
2 changed files with 6 additions and 19 deletions
|
@ -349,7 +349,6 @@ struct Shell_s
|
||||||
void *lex_context;
|
void *lex_context;
|
||||||
void *arg_context;
|
void *arg_context;
|
||||||
void *pathlist;
|
void *pathlist;
|
||||||
void *defpathlist;
|
|
||||||
void *cdpathlist;
|
void *cdpathlist;
|
||||||
char **argaddr;
|
char **argaddr;
|
||||||
char cond_expan; /* set while processing ${var=val}, ${var:=val}, ${var?err}, ${var:?err} */
|
char cond_expan; /* set while processing ${var=val}, ${var:=val}, ${var?err}, ${var:?err} */
|
||||||
|
|
|
@ -381,8 +381,7 @@ static void pathinit(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!(pp=(Pathcomp_t*)sh.defpathlist))
|
pp = defpathinit();
|
||||||
pp = defpathinit();
|
|
||||||
sh.pathlist = (void*)path_dup(pp);
|
sh.pathlist = (void*)path_dup(pp);
|
||||||
}
|
}
|
||||||
if(val=sh_scoped((FPATHNOD))->nvalue.cp)
|
if(val=sh_scoped((FPATHNOD))->nvalue.cp)
|
||||||
|
@ -407,8 +406,7 @@ Pathcomp_t *path_get(const char *name)
|
||||||
}
|
}
|
||||||
if(!pp && (!(sh_scoped(PATHNOD)->nvalue.cp)) || sh_isstate(SH_DEFPATH))
|
if(!pp && (!(sh_scoped(PATHNOD)->nvalue.cp)) || sh_isstate(SH_DEFPATH))
|
||||||
{
|
{
|
||||||
if(!(pp=(Pathcomp_t*)sh.defpathlist))
|
pp = defpathinit();
|
||||||
pp = defpathinit();
|
|
||||||
}
|
}
|
||||||
return(pp);
|
return(pp);
|
||||||
}
|
}
|
||||||
|
@ -630,12 +628,7 @@ int path_search(register const char *name,Pathcomp_t **oldpp, int flag)
|
||||||
stakputc(0);
|
stakputc(0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
if(sh_isstate(SH_DEFPATH))
|
if(!sh_isstate(SH_DEFPATH) && !sh.pathlist)
|
||||||
{
|
|
||||||
if(!sh.defpathlist)
|
|
||||||
defpathinit();
|
|
||||||
}
|
|
||||||
else if(!sh.pathlist)
|
|
||||||
pathinit();
|
pathinit();
|
||||||
if(flag)
|
if(flag)
|
||||||
{
|
{
|
||||||
|
@ -663,8 +656,8 @@ int path_search(register const char *name,Pathcomp_t **oldpp, int flag)
|
||||||
}
|
}
|
||||||
if(flag==0 || !pp || (pp->flags&PATH_FPATH))
|
if(flag==0 || !pp || (pp->flags&PATH_FPATH))
|
||||||
{
|
{
|
||||||
if(!pp)
|
if(!pp && !sh_isstate(SH_DEFPATH))
|
||||||
pp=sh_isstate(SH_DEFPATH)?sh.defpathlist:sh.pathlist;
|
pp = sh.pathlist;
|
||||||
if(pp && strlen(name)<256 && strmatch(name,e_alphanum) && (fno=opentype(name,pp,1))>=0)
|
if(pp && strlen(name)<256 && strmatch(name,e_alphanum) && (fno=opentype(name,pp,1))>=0)
|
||||||
{
|
{
|
||||||
if(flag >= 2)
|
if(flag >= 2)
|
||||||
|
@ -1635,12 +1628,7 @@ Pathcomp_t *path_addpath(Pathcomp_t *first, register const char *path,int type)
|
||||||
if(old)
|
if(old)
|
||||||
{
|
{
|
||||||
if(!first && !path)
|
if(!first && !path)
|
||||||
{
|
first = path_dup(defpathinit());
|
||||||
Pathcomp_t *pp = (Pathcomp_t*)sh.defpathlist;
|
|
||||||
if(!pp)
|
|
||||||
pp = defpathinit();
|
|
||||||
first = path_dup(pp);
|
|
||||||
}
|
|
||||||
if(cp=(sh_scoped(FPATHNOD))->nvalue.cp)
|
if(cp=(sh_scoped(FPATHNOD))->nvalue.cp)
|
||||||
first = (void*)path_addpath((Pathcomp_t*)first,cp,PATH_FPATH);
|
first = (void*)path_addpath((Pathcomp_t*)first,cp,PATH_FPATH);
|
||||||
path_delete(old);
|
path_delete(old);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue