@@ -46,7 +46,7 @@ static void funload(int,const char*);
46
46
static void noreturn exscript (char * , char * []);
47
47
static int checkdotpaths (Pathcomp_t * ,Pathcomp_t * ,Pathcomp_t * ,int );
48
48
static void checkdup (Pathcomp_t * );
49
- static Pathcomp_t * defpathinit (void );
49
+ static Pathcomp_t * defpath (void );
50
50
51
51
static const char * std_path (void )
52
52
{
@@ -406,9 +406,12 @@ Pathcomp_t *path_nextcomp(Pathcomp_t *pp, const char *name, Pathcomp_t *last)
406
406
return NULL ;
407
407
}
408
408
409
- static Pathcomp_t * defpathinit (void )
409
+ static Pathcomp_t * defpath (void )
410
410
{
411
- return path_addpath (NULL ,std_path (),PATH_PATH );
411
+ static Pathcomp_t * dp ;
412
+ if (!dp )
413
+ dp = path_addpath (NULL , std_path (), PATH_PATH );
414
+ return dp ;
412
415
}
413
416
414
417
static void pathinit (void )
@@ -419,7 +422,7 @@ static void pathinit(void)
419
422
sh .pathlist = pp = path_addpath ((Pathcomp_t * )sh .pathlist ,val ,PATH_PATH );
420
423
else
421
424
{
422
- pp = defpathinit ();
425
+ pp = defpath ();
423
426
sh .pathlist = path_dup (pp );
424
427
}
425
428
if (val = sh_scoped ((FPATHNOD ))-> nvalue )
@@ -441,7 +444,7 @@ Pathcomp_t *path_get(const char *name)
441
444
pp = (Pathcomp_t * )sh .pathlist ;
442
445
}
443
446
if (!pp && (!(sh_scoped (PATHNOD )-> nvalue )) || sh_isstate (SH_DEFPATH ))
444
- pp = defpathinit ();
447
+ pp = defpath ();
445
448
return pp ;
446
449
}
447
450
@@ -1619,7 +1622,7 @@ Pathcomp_t *path_addpath(Pathcomp_t *first, const char *path,int type)
1619
1622
if (old )
1620
1623
{
1621
1624
if (!first && !path )
1622
- first = path_dup (defpathinit ());
1625
+ first = path_dup (defpath ());
1623
1626
if (cp = (sh_scoped (FPATHNOD ))-> nvalue )
1624
1627
first = path_addpath ((Pathcomp_t * )first ,cp ,PATH_FPATH );
1625
1628
path_delete (old );
0 commit comments