Skip to content

Commit 735da93

Browse files
fanatidrvagg
authored andcommittedDec 20, 2019
src: fixes for node 12
ref: #120 (comment)
1 parent ce26c0c commit 735da93

File tree

3 files changed

+34
-26
lines changed

3 files changed

+34
-26
lines changed
 

‎.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ node_js:
99
- 6
1010
- 8
1111
- 10
12+
- 12
1213
notifications:
1314
email:
1415
- rod@vagg.org

‎bignum.cc

+32-25
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,29 @@ using namespace std;
4848
Nan::ThrowTypeError("Argument " #I " must be an int64"); \
4949
return; \
5050
} \
51-
int64_t VAR = info[I]->ToInteger()->Value();
51+
int64_t VAR = info[I]->ToInteger(info.GetIsolate()->GetCurrentContext()).ToLocalChecked()->Value();
5252

5353
#define REQ_UINT64_ARG(I, VAR) \
5454
if (info.Length() <= (I) || !info[I]->IsNumber()) { \
5555
Nan::ThrowTypeError("Argument " #I " must be a uint64"); \
5656
return; \
5757
} \
58-
uint64_t VAR = info[I]->ToInteger()->Value();
58+
uint64_t VAR = info[I]->ToInteger(info.GetIsolate()->GetCurrentContext()).ToLocalChecked()->Value();
5959

6060
#define REQ_BOOL_ARG(I, VAR) \
6161
if (info.Length() <= (I) || !info[I]->IsBoolean()) { \
6262
Nan::ThrowTypeError("Argument " #I " must be a boolean"); \
6363
return; \
6464
} \
65-
bool VAR = info[I]->ToBoolean()->Value();
65+
bool VAR = info[I]->ToBoolean(info.GetIsolate()->GetCurrentContext()).ToLocalChecked()->Value();
6666

6767
#define WRAP_RESULT(RES, VAR) \
6868
Local<Value> arg[1] = { Nan::New<External>(static_cast<BigNum*>(RES)) }; \
69-
Local<Object> VAR = Nan::NewInstance(Nan::New<FunctionTemplate>(constructor_template)->GetFunction(), \
70-
1, arg).ToLocalChecked();
69+
Local<Object> VAR = Nan::NewInstance( \
70+
Nan::New<FunctionTemplate>(constructor_template)->GetFunction(info.GetIsolate()->GetCurrentContext()).ToLocalChecked(), \
71+
1, \
72+
arg \
73+
).ToLocalChecked();
7174

7275
class AutoBN_CTX
7376
{
@@ -288,7 +291,8 @@ void BigNum::Initialize(v8::Local<v8::Object> target) {
288291
Nan::SetPrototypeMethod(tmpl, "setCompact", Bsetcompact);
289292
Nan::SetPrototypeMethod(tmpl, "isbitset", IsBitSet);
290293

291-
target->Set(Nan::New("BigNum").ToLocalChecked(), tmpl->GetFunction());
294+
v8::Isolate *isolate = v8::Isolate::GetCurrent();
295+
target->Set(Nan::New("BigNum").ToLocalChecked(), tmpl->GetFunction(isolate->GetCurrentContext()).ToLocalChecked());
292296
}
293297

294298
BigNum::BigNum(const Nan::Utf8String& str, uint64_t base) : Nan::ObjectWrap (),
@@ -382,7 +386,7 @@ NAN_METHOD(BigNum::New)
382386

383387
Nan::TryCatch tryCatch;
384388
Nan::MaybeLocal<Object> newInstMaybeLocal = Nan::NewInstance(
385-
Nan::New<FunctionTemplate>(constructor_template)->GetFunction(), len, newArgs);
389+
Nan::New<FunctionTemplate>(constructor_template)->GetFunction(info.GetIsolate()->GetCurrentContext()).ToLocalChecked(), len, newArgs);
386390
if (tryCatch.HasCaught()) {
387391
tryCatch.ReThrow();
388392
return;
@@ -397,6 +401,8 @@ NAN_METHOD(BigNum::New)
397401
BigNum *bignum;
398402
uint64_t base;
399403

404+
Local<Context> currentContext = info.GetIsolate()->GetCurrentContext();
405+
400406
if (info[0]->IsExternal()) {
401407
bignum = static_cast<BigNum*>(External::Cast(*(info[0]))->Value());
402408
} else {
@@ -406,17 +412,18 @@ NAN_METHOD(BigNum::New)
406412
for (int i = 0; i < len; i++) {
407413
newArgs[i] = info[i];
408414
}
409-
Local<Value> obj = Nan::New<Function>(js_conditioner)->
410-
Call(ctx, info.Length(), newArgs);
415+
Local<Value> obj;
416+
const int ok = Nan::New<Function>(js_conditioner)->
417+
Call(currentContext, ctx, info.Length(), newArgs).ToLocal(&obj);
411418
delete[] newArgs;
412419

413-
if (!*obj) {
420+
if (!ok) {
414421
Nan::ThrowError("Invalid type passed to bignum constructor");
415422
return;
416423
}
417424

418-
Nan::Utf8String str(obj->ToObject()->Get(Nan::New("num").ToLocalChecked())->ToString());
419-
base = Nan::To<int64_t>(obj->ToObject()->Get(Nan::New("base").ToLocalChecked())).FromJust();
425+
Nan::Utf8String str(obj->ToObject(currentContext).ToLocalChecked()->Get(Nan::New("num").ToLocalChecked())->ToString(currentContext).ToLocalChecked());
426+
base = Nan::To<int64_t>(obj->ToObject(currentContext).ToLocalChecked()->Get(Nan::New("base").ToLocalChecked())).FromJust();
420427

421428
bignum = new BigNum(str, base);
422429
}
@@ -459,7 +466,7 @@ NAN_METHOD(BigNum::Badd)
459466
{
460467
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
461468

462-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
469+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
463470
BigNum *res = new BigNum();
464471

465472
BN_add(res->bignum_, bignum->bignum_, bn->bignum_);
@@ -473,7 +480,7 @@ NAN_METHOD(BigNum::Bsub)
473480
{
474481
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
475482

476-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
483+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
477484
BigNum *res = new BigNum();
478485
BN_sub(res->bignum_, bignum->bignum_, bn->bignum_);
479486

@@ -487,7 +494,7 @@ NAN_METHOD(BigNum::Bmul)
487494
AutoBN_CTX ctx;
488495
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
489496

490-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
497+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
491498
BigNum *res = new BigNum();
492499
BN_mul(res->bignum_, bignum->bignum_, bn->bignum_, ctx);
493500

@@ -501,7 +508,7 @@ NAN_METHOD(BigNum::Bdiv)
501508
AutoBN_CTX ctx;
502509
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
503510

504-
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
511+
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
505512
BigNum *res = new BigNum();
506513
BN_div(res->bignum_, NULL, bignum->bignum_, bi->bignum_, ctx);
507514

@@ -639,7 +646,7 @@ NAN_METHOD(BigNum::Bmod)
639646
AutoBN_CTX ctx;
640647
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
641648

642-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
649+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
643650
BigNum *res = new BigNum();
644651
BN_div(NULL, res->bignum_, bignum->bignum_, bn->bignum_, ctx);
645652

@@ -672,8 +679,8 @@ NAN_METHOD(BigNum::Bpowm)
672679
AutoBN_CTX ctx;
673680
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
674681

675-
BigNum *bn1 = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
676-
BigNum *bn2 = Nan::ObjectWrap::Unwrap<BigNum>(info[1]->ToObject());
682+
BigNum *bn1 = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
683+
BigNum *bn2 = Nan::ObjectWrap::Unwrap<BigNum>(info[1]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
677684
BigNum *res = new BigNum();
678685
BN_mod_exp(res->bignum_, bignum->bignum_, bn1->bignum_, bn2->bignum_, ctx);
679686

@@ -688,7 +695,7 @@ NAN_METHOD(BigNum::Upowm)
688695
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
689696

690697
REQ_UINT64_ARG(0, x);
691-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[1]->ToObject());
698+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[1]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
692699
BigNum *exp = new BigNum(x);
693700

694701
BigNum *res = new BigNum();
@@ -765,7 +772,7 @@ NAN_METHOD(BigNum::Bcompare)
765772
{
766773
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
767774

768-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
775+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
769776

770777
info.GetReturnValue().Set(Nan::New<Number>(BN_cmp(bignum->bignum_, bn->bignum_)));
771778
}
@@ -895,7 +902,7 @@ BigNum::Bop(Nan::NAN_METHOD_ARGS_TYPE info, int op)
895902
Nan::EscapableHandleScope scope;
896903

897904
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
898-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
905+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
899906

900907
bool bignumNegative = BN_is_negative(bignum->bignum_);
901908
bool bnNegative = BN_is_negative(bn->bignum_);
@@ -1024,7 +1031,7 @@ NAN_METHOD(BigNum::Binvertm)
10241031
AutoBN_CTX ctx;
10251032
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
10261033

1027-
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
1034+
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
10281035
BigNum *res = new BigNum();
10291036
BN_mod_inverse(res->bignum_, bignum->bignum_, bn->bignum_, ctx);
10301037

@@ -1058,7 +1065,7 @@ NAN_METHOD(BigNum::Bgcd)
10581065
AutoBN_CTX ctx;
10591066
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
10601067

1061-
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
1068+
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
10621069
BigNum *res = new BigNum();
10631070

10641071
BN_gcd(res->bignum_, bignum->bignum_, bi->bignum_, ctx);
@@ -1072,7 +1079,7 @@ NAN_METHOD(BigNum::Bjacobi)
10721079
AutoBN_CTX ctx;
10731080
BigNum *bn_a = Nan::ObjectWrap::Unwrap<BigNum>(info.This());
10741081

1075-
BigNum *bn_n = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject());
1082+
BigNum *bn_n = Nan::ObjectWrap::Unwrap<BigNum>(info[0]->ToObject(info.GetIsolate()->GetCurrentContext()).ToLocalChecked());
10761083
int res = 0;
10771084

10781085
if (BN_jacobi_priv(bn_a->bignum_, bn_n->bignum_, &res, ctx) == -1) {

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
},
2424
"dependencies": {
2525
"bindings": "~1.3.0",
26-
"nan": "~2.10.0",
26+
"nan": "~2.13.2",
2727
"prebuild-install": "~4.0.0",
2828
"safe-buffer": "~5.1.2"
2929
},

0 commit comments

Comments
 (0)
Please sign in to comment.