console: handle undefined + null in console funcs #21160 (#1525)

This commit is contained in:
Daniel Liu 2025-09-24 07:45:57 +08:00 committed by GitHub
parent 2563cd13ed
commit 473b22bd55
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -19,6 +19,7 @@ package console
import (
"encoding/json"
"errors"
"fmt"
"io"
"reflect"
"strings"
@ -53,10 +54,11 @@ func (b *bridge) Sleep(call jsre.Call) (goja.Value, error) {
if nArgs := len(call.Arguments); nArgs < 1 {
return nil, errors.New("usage: sleep(<number of seconds>)")
}
if !isNumber(call.Argument(0)) {
return nil, errors.New("usage: sleep(<number of seconds>)")
sleepObj := call.Argument(0)
if goja.IsUndefined(sleepObj) || goja.IsNull(sleepObj) || !isNumber(sleepObj) {
return nil, fmt.Errorf("usage: sleep(<number of seconds>)")
}
sleep := call.Argument(0).ToFloat()
sleep := sleepObj.ToFloat()
time.Sleep(time.Duration(sleep * float64(time.Second)))
return call.VM.ToValue(true), nil
}
@ -74,13 +76,13 @@ func (b *bridge) SleepBlocks(call jsre.Call) (goja.Value, error) {
return nil, errors.New("usage: sleepBlocks(<n blocks>[, max sleep in seconds])")
}
if nArgs >= 1 {
if !isNumber(call.Argument(0)) {
if goja.IsNull(call.Argument(0)) || goja.IsUndefined(call.Argument(0)) || !isNumber(call.Argument(0)) {
return nil, errors.New("expected number as first argument")
}
blocks = call.Argument(0).ToInteger()
}
if nArgs >= 2 {
if !isNumber(call.Argument(1)) {
if goja.IsNull(call.Argument(1)) || goja.IsUndefined(call.Argument(1)) || !isNumber(call.Argument(1)) {
return nil, errors.New("expected number as second argument")
}
sleep = call.Argument(1).ToInteger()