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:
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
}