aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-08-29 22:23:04 +0000
committerMel <einebeere@gmail.com>2022-08-29 22:23:04 +0000
commit40b5571547b33ab3749aebfeca716777b744cdec (patch)
treeb832ae25399634a602134e28268272523c9a11f4
parentb4a0f2209026a90bfd67072526f938e00c00af78 (diff)
downloadjinx-40b5571547b33ab3749aebfeca716777b744cdec.tar.zst
jinx-40b5571547b33ab3749aebfeca716777b744cdec.zip
Fix outlet leak when outlet value points to itself
-rw-r--r--pkg/lang/vm/value/value.go4
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 {