diff options
| author | Mel <einebeere@gmail.com> | 2022-08-29 22:23:04 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-29 22:23:04 +0000 |
| commit | 40b5571547b33ab3749aebfeca716777b744cdec (patch) | |
| tree | b832ae25399634a602134e28268272523c9a11f4 /pkg/lang/vm/value | |
| parent | b4a0f2209026a90bfd67072526f938e00c00af78 (diff) | |
| download | jinx-40b5571547b33ab3749aebfeca716777b744cdec.tar.zst jinx-40b5571547b33ab3749aebfeca716777b744cdec.zip | |
Fix outlet leak when outlet value points to itself
Diffstat (limited to 'pkg/lang/vm/value')
| -rw-r--r-- | pkg/lang/vm/value/value.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/pkg/lang/vm/value/value.go b/pkg/lang/vm/value/value.go index e2750f4..21cf962 100644 --- a/pkg/lang/vm/value/value.go +++ b/pkg/lang/vm/value/value.go @@ -177,7 +177,9 @@ func (v Value) Clone(m mem.Mem) (Value, error) { func (v Value) Drop(m mem.Mem) error { // If value has an outlet, don't drop it and instead move it to the outlet. if !v.outlet.IsNull() { - return m.Set(v.outlet, OutletCell(v)) + outlet := v.outlet + v.outlet = mem.NullPtr // Reset outlet to null + return m.Set(outlet, OutletCell(v)) } if v.t == StringType { |
