go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

commit 50b7d436b2ee75aae1591a558735e97327590c02
parent e5285233f5d196bfd5c28e2200fea8bc6978a62c
Author: alfred-mk <alfredmwaik@gmail.com>
Date:   Wed,  5 Feb 2025 17:17:04 +0300

Run the engine reset in the Exec

Diffstat:
Mengine/db.go | 13++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/engine/db.go b/engine/db.go @@ -491,6 +491,10 @@ func (en *DefaultEngine) Exec(ctx context.Context, input []byte) (bool, error) { ctx = context.WithValue(ctx, "Language", *en.st.Language) } + if len(input) == 0 { + en.Reset(ctx, true) + } + if len(input) > 0 { _, err = vm.ValidInput(input) if err != nil { @@ -585,12 +589,15 @@ func (en *DefaultEngine) Flush(ctx context.Context, w io.Writer) (int, error) { // start execution over at top node while keeping current state of client error flags. func (en *DefaultEngine) Reset(ctx context.Context, force bool) (bool, error) { - var err error - var b []byte if force { + sym := en.cfg.Root + if sym == "" { + return false, fmt.Errorf("start sym empty") + } + b := vm.NewLine(nil, vm.MOVE, []string{sym}, nil, nil) en.st.SetCode(b) } else { - b, err = en.st.GetCode() + b, err := en.st.GetCode() if err != nil { return false, err }