@@ -65,7 +65,7 @@ func (r *Runner) fillExpandConfig(ctx context.Context) {
65
65
r2 .stdout = w
66
66
r2 .stmts (ctx , cs .Stmts )
67
67
r .lastExpandExit = r2 .exit
68
- return r2 .err
68
+ return r2 .fatalErr
69
69
},
70
70
ProcSubst : func (ps * syntax.ProcSubst ) (string , error ) {
71
71
if runtime .GOOS == "windows" {
@@ -261,9 +261,9 @@ func (r *Runner) handlerCtx(ctx context.Context) context.Context {
261
261
return context .WithValue (ctx , handlerCtxKey {}, hc )
262
262
}
263
263
264
- func (r * Runner ) setErr (err error ) {
265
- if r .err == nil {
266
- r .err = err
264
+ func (r * Runner ) setFatalErr (err error ) {
265
+ if r .fatalErr == nil {
266
+ r .fatalErr = err
267
267
}
268
268
}
269
269
@@ -280,11 +280,11 @@ func (r *Runner) errf(format string, a ...any) {
280
280
}
281
281
282
282
func (r * Runner ) stop (ctx context.Context ) bool {
283
- if r .err != nil || r .returning || r .exiting {
283
+ if r .fatalErr != nil || r .returning || r .exiting {
284
284
return true
285
285
}
286
286
if err := ctx .Err (); err != nil {
287
- r .err = err
287
+ r .fatalErr = err
288
288
return true
289
289
}
290
290
if r .opts [optNoExec ] {
@@ -367,7 +367,7 @@ func (r *Runner) cmd(ctx context.Context, cm syntax.Command) {
367
367
r2 := r .subshell (false )
368
368
r2 .stmts (ctx , cm .Stmts )
369
369
r .exit = r2 .exit
370
- r .setErr (r2 .err )
370
+ r .setFatalErr (r2 .fatalErr )
371
371
case * syntax.CallExpr :
372
372
// Use a new slice, to not modify the slice in the alias map.
373
373
var args []* syntax.Word
@@ -464,7 +464,7 @@ func (r *Runner) cmd(ctx context.Context, cm syntax.Command) {
464
464
case syntax .Pipe , syntax .PipeAll :
465
465
pr , pw , err := os .Pipe ()
466
466
if err != nil {
467
- r .setErr (err )
467
+ r .setFatalErr (err ) // not being able to create a pipe is rare but critical
468
468
return
469
469
}
470
470
r2 := r .subshell (false )
@@ -489,7 +489,7 @@ func (r *Runner) cmd(ctx context.Context, cm syntax.Command) {
489
489
r .exit = r2 .exit
490
490
r .exiting = r2 .exiting
491
491
}
492
- r .setErr (r2 .err )
492
+ r .setFatalErr (r2 .fatalErr )
493
493
}
494
494
case * syntax.IfClause :
495
495
oldNoErrExit := r .noErrExit
@@ -994,7 +994,7 @@ func (r *Runner) call(ctx context.Context, pos syntax.Pos, args []string) {
994
994
args , err = r .callHandler (r .handlerCtx (ctx ), args )
995
995
if err != nil {
996
996
// handler's custom fatal error
997
- r .setErr (err )
997
+ r .setFatalErr (err )
998
998
return
999
999
}
1000
1000
}
@@ -1034,7 +1034,7 @@ func (r *Runner) exec(ctx context.Context, args []string) {
1034
1034
r .exit = int (status )
1035
1035
} else {
1036
1036
// handler's custom fatal error
1037
- r .setErr (err )
1037
+ r .setFatalErr (err )
1038
1038
r .exit = 1
1039
1039
}
1040
1040
} else {
@@ -1066,7 +1066,7 @@ func (r *Runner) open(ctx context.Context, path string, flags int, mode os.FileM
1066
1066
r .errf ("%v\n " , err )
1067
1067
}
1068
1068
default : // handler's custom fatal error
1069
- r .setErr (err )
1069
+ r .setFatalErr (err )
1070
1070
}
1071
1071
return nil , err
1072
1072
}
0 commit comments