aboutsummaryrefslogtreecommitdiffstats
path: root/prog
diff options
context:
space:
mode:
authorAleksandr Nogikh <wp32pw@gmail.com>2024-03-08 17:24:27 +0100
committerAleksandr Nogikh <wp32pw@gmail.com>2024-03-08 16:36:20 +0000
commit96d142e71b8a8a5affdab6f1c033799510040cce (patch)
treeb8b8a6aec40c6eb6d624c894eda84c291a9de129 /prog
parent0b3e125fda2e386091985b4b57231dd19341f64e (diff)
Revert "prog: fix resource leak during replaceArg() of union fields"
This reverts commit 6387f6b7d487e2a77d753ad28c1074e39c17c3ca.
Diffstat (limited to 'prog')
-rw-r--r--prog/expr_test.go17
-rw-r--r--prog/mutation.go1
-rw-r--r--prog/prog.go3
3 files changed, 1 insertions, 20 deletions
diff --git a/prog/expr_test.go b/prog/expr_test.go
index adff50c6a..f6c8c8603 100644
--- a/prog/expr_test.go
+++ b/prog/expr_test.go
@@ -42,23 +42,6 @@ func TestGenerateConditionalFields(t *testing.T) {
}
}
-func TestConditionalResources(t *testing.T) {
- // Let's stress test the code and rely on various internal checks.
- target, rs, _ := initRandomTargetTest(t, "test", "64")
- ct := target.BuildChoiceTable(nil, map[*Syscall]bool{
- target.SyscallMap["test$create_cond_resource"]: true,
- target.SyscallMap["test$use_cond_resource"]: true,
- })
- iters := 500
- if testing.Short() {
- iters /= 10
- }
- for i := 0; i < iters; i++ {
- p := target.Generate(rs, 10, ct)
- p.Mutate(rs, 10, ct, nil, nil)
- }
-}
-
func TestMutateConditionalFields(t *testing.T) {
target, rs, _ := initRandomTargetTest(t, "test", "64")
ct := target.DefaultChoiceTable()
diff --git a/prog/mutation.go b/prog/mutation.go
index 54f88c175..cf93ce4eb 100644
--- a/prog/mutation.go
+++ b/prog/mutation.go
@@ -505,6 +505,7 @@ func (t *UnionType) mutate(r *randGen, s *state, arg Arg, ctx ArgCtx) (calls []*
index++
}
optType, optDir := t.Fields[index].Type, t.Fields[index].Dir(a.Dir())
+ removeArg(a.Option)
var newOpt Arg
newOpt, calls = r.generateArg(s, optType, optDir)
replaceArg(arg, MakeUnionArg(t, a.Dir(), newOpt, index))
diff --git a/prog/prog.go b/prog/prog.go
index f93293b64..34fcfa6e8 100644
--- a/prog/prog.go
+++ b/prog/prog.go
@@ -362,9 +362,6 @@ func replaceArg(arg, arg1 Arg) {
case *PointerArg:
*a = *arg1.(*PointerArg)
case *UnionArg:
- if a.Option != nil {
- removeArg(a.Option)
- }
*a = *arg1.(*UnionArg)
case *DataArg:
*a = *arg1.(*DataArg)