diff --git a/src/eckey.cc b/src/eckey.cc index 973d989..e5616c6 100644 --- a/src/eckey.cc +++ b/src/eckey.cc @@ -160,20 +160,26 @@ Key::New() Handle Key::New(const Arguments& args) { - if (!args.IsConstructCall()) { - return FromConstructorTemplate(s_ct, args); - } - HandleScope scope; - Key* key = new Key(); - if (key->lastError != NULL) { - return VException(key->lastError); + // this was invoked as Key() not new Key() + if (!args.IsConstructCall()) { +// return FromConstructorTemplate(s_ct, args); + + const int argc = 1; + Local argv[argc] = { args[0] }; + return scope.Close(s_ct->GetFunction()->NewInstance(argc, argv)); } + else{ + Key* key = new Key(); + if (key->lastError != NULL) { + return VException(key->lastError); + } - key->Wrap(args.Holder()); + key->Wrap(args.Holder()); - return scope.Close(args.This()); + return scope.Close(args.This()); + } } Handle