aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jsre/pretty.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/jsre/pretty.go b/jsre/pretty.go
index d0b42cd01..8b2b35e8e 100644
--- a/jsre/pretty.go
+++ b/jsre/pretty.go
@@ -227,12 +227,20 @@ func iterOwnKeys(vm *otto.Otto, obj *otto.Object, f func(string)) {
}
func (ctx ppctx) isBigNumber(v *otto.Object) bool {
- BigNumber, err := ctx.vm.Run("BigNumber.prototype")
- if err != nil {
- panic(err)
+ // Handle numbers with custom constructor.
+ if v, _ := v.Get("constructor"); v.Object() != nil {
+ if strings.HasPrefix(toString(v.Object()), "function BigNumber") {
+ return true
+ }
+ }
+ // Handle default constructor.
+ BigNumber, _ := ctx.vm.Object("BigNumber.prototype")
+ if BigNumber == nil {
+ return false
}
- cp := constructorPrototype(v)
- return cp != nil && cp.Value() == BigNumber
+ bv, _ := BigNumber.Call("isPrototypeOf", v)
+ b, _ := bv.ToBoolean()
+ return b
}
func toString(obj *otto.Object) string {