Improve JavaScript argument handling in jsCall method
- Add null check for jsArgs to prevent potential nil pointer dereferences - Refactor argument parsing logic to handle optional arguments more robustly - Ensure safe conversion of JavaScript arguments to Go slice - Enhance error handling for argument type conversion
This commit is contained in:
parent
6b15a1763e
commit
ae599d9b83
1 changed files with 19 additions and 18 deletions
|
|
@ -188,27 +188,28 @@ func jsCall(info *v8go.FunctionCallbackInfo) *v8go.Value {
|
|||
|
||||
// Rest args
|
||||
var jsArgs *v8go.Value
|
||||
goArgs := []interface{}{}
|
||||
if len(args) > 3 {
|
||||
jsArgs = args[3]
|
||||
}
|
||||
|
||||
goArgs := []interface{}{}
|
||||
if jsArgs.IsArray() {
|
||||
v, err := bridge.GoValue(jsArgs, info.Context())
|
||||
if err != nil {
|
||||
return bridge.JsException(info.Context(), err.Error())
|
||||
if jsArgs != nil {
|
||||
if jsArgs.IsArray() {
|
||||
v, err := bridge.GoValue(jsArgs, info.Context())
|
||||
if err != nil {
|
||||
return bridge.JsException(info.Context(), err.Error())
|
||||
}
|
||||
arr, ok := v.([]interface{})
|
||||
if !ok {
|
||||
return bridge.JsException(info.Context(), "Invalid arguments")
|
||||
}
|
||||
goArgs = arr
|
||||
} else {
|
||||
v, err := bridge.GoValue(jsArgs, info.Context())
|
||||
if err != nil {
|
||||
return bridge.JsException(info.Context(), err.Error())
|
||||
}
|
||||
goArgs = []interface{}{v}
|
||||
}
|
||||
}
|
||||
arr, ok := v.([]interface{})
|
||||
if !ok {
|
||||
return bridge.JsException(info.Context(), "Invalid arguments")
|
||||
}
|
||||
goArgs = arr
|
||||
} else {
|
||||
v, err := bridge.GoValue(jsArgs, info.Context())
|
||||
if err != nil {
|
||||
return bridge.JsException(info.Context(), err.Error())
|
||||
}
|
||||
goArgs = []interface{}{v}
|
||||
}
|
||||
|
||||
// Parse the callback
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue