Skip to content

Commit 0e59615

Browse files
committed
remove package-global argValues array
prevents data races in concurrent use
1 parent e9e5e63 commit 0e59615

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

eval.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,8 +1258,6 @@ func (st *Runtime) evalPipelineExpression(node *PipeNode) (value reflect.Value,
12581258
return
12591259
}
12601260

1261-
var argValues = [24]reflect.Value{}
1262-
12631261
func (st *Runtime) evaluateArgs(fnType reflect.Type, args CallArgs, pipedArg *reflect.Value) ([]reflect.Value, error) {
12641262
numArgs := len(args.Exprs)
12651263
if !args.HasPipeSlot && pipedArg != nil {
@@ -1278,6 +1276,7 @@ func (st *Runtime) evaluateArgs(fnType reflect.Type, args CallArgs, pipedArg *re
12781276
}
12791277
}
12801278

1279+
argValues := make([]reflect.Value, numArgs)
12811280
slot := 0 // index in argument values (evaluated expressions combined with piped argument if applicable)
12821281

12831282
if !args.HasPipeSlot && pipedArg != nil {
@@ -1325,7 +1324,7 @@ func (st *Runtime) evaluateArgs(fnType reflect.Type, args CallArgs, pipedArg *re
13251324
}
13261325
}
13271326

1328-
return argValues[:slot], nil
1327+
return argValues, nil
13291328
}
13301329

13311330
func isUint(kind reflect.Kind) bool {

0 commit comments

Comments
 (0)