about summary refs log tree commit diff
path: root/pkg/lang/vm/mem
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/vm/mem')
-rw-r--r--pkg/lang/vm/mem/cell.go2
-rw-r--r--pkg/lang/vm/mem/mem.go4
-rw-r--r--pkg/lang/vm/mem/mem_test.go2
3 files changed, 5 insertions, 3 deletions
diff --git a/pkg/lang/vm/mem/cell.go b/pkg/lang/vm/mem/cell.go
index 85d6c34..0a5e80c 100644
--- a/pkg/lang/vm/mem/cell.go
+++ b/pkg/lang/vm/mem/cell.go
@@ -49,6 +49,6 @@ type cell struct {
 }
 
 type CellData interface {
-	DropCell(Mem)
+	DropCell(Mem) error
 	MatchingCellKind() CellKind
 }
diff --git a/pkg/lang/vm/mem/mem.go b/pkg/lang/vm/mem/mem.go
index 99412ea..b590bcc 100644
--- a/pkg/lang/vm/mem/mem.go
+++ b/pkg/lang/vm/mem/mem.go
@@ -144,7 +144,9 @@ func (m *memImpl) Release(ptr Ptr) error {
 		c := m.cells[ptr].data
 
 		if c != nil {
-			c.DropCell(m)
+			if err := c.DropCell(m); err != nil {
+				return err
+			}
 		}
 
 		m.cells[ptr] = cell{}
diff --git a/pkg/lang/vm/mem/mem_test.go b/pkg/lang/vm/mem/mem_test.go
index f916e49..0c74093 100644
--- a/pkg/lang/vm/mem/mem_test.go
+++ b/pkg/lang/vm/mem/mem_test.go
@@ -208,7 +208,7 @@ func TestChainDrop(t *testing.T) {
 	assert.Equal(t, mem.CellKindArray, m.Kind(mem.Ptr(5)))
 	assert.Equal(t, mem.CellKindEmpty, m.Kind(mem.Ptr(6)))
 
-	val.Drop(m)
+	assert.NoError(t, val.Drop(m))
 
 	for _, ptr := range []mem.Ptr{1, 2, 3, 4, 5, 6} {
 		assert.Equal(t, mem.CellKindEmpty, m.Kind(ptr))