From eed623354e97288c44de870f49a9228b1905ff01 Mon Sep 17 00:00:00 2001 From: MoneroOcean Date: Sun, 25 Mar 2018 03:30:21 +0200 Subject: [PATCH] Revert "Simplified code" This reverts commit d1fef4814c343b2c085aff669318f9fd273eade3. --- src/main.cc | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main.cc b/src/main.cc index b1e4fc0..61db6fc 100644 --- a/src/main.cc +++ b/src/main.cc @@ -93,10 +93,11 @@ NAN_METHOD(convert_blob) { if (!get_block_hashing_blob(b, output)) return THROW_ERROR_EXCEPTION("Failed to create mining block"); } - NanReturnValue(NanNewBufferHandle(output.data(), output.size())); + v8::Local returnValue = Nan::CopyBuffer((char*)output.data(), output.size()).ToLocalChecked(); + info.GetReturnValue().Set(returnValue); } -NAN_METHOD(get_block_id) { +void get_block_id(const Nan::FunctionCallbackInfo& info) { if (info.Length() < 1) return THROW_ERROR_EXCEPTION("You must provide one argument."); Local target = info[0]->ToObject(); @@ -112,10 +113,12 @@ NAN_METHOD(get_block_id) { crypto::hash block_id; if (!get_block_hash(b, block_id)) return THROW_ERROR_EXCEPTION("Failed to calculate hash for block"); - NanReturnValue(NanNewBufferHandle(reinterpret_cast(&block_id), sizeof(block_id))); + char *cstr = reinterpret_cast(&block_id); + v8::Local returnValue = Nan::CopyBuffer(cstr, 32).ToLocalChecked(); + info.GetReturnValue().Set(returnValue); } -NAN_METHOD(construct_block_blob) { +void construct_block_blob(const Nan::FunctionCallbackInfo& info) { if (info.Length() < 2) return THROW_ERROR_EXCEPTION("You must provide two arguments."); Local block_template_buf = info[0]->ToObject(); @@ -143,11 +146,12 @@ NAN_METHOD(construct_block_blob) { if (!block_to_blob(b, output)) return THROW_ERROR_EXCEPTION("Failed to convert block to blob"); - NanReturnValue(NanNewBufferHandle(output.data(), output.size())); + v8::Local returnValue = Nan::CopyBuffer((char*)output.data(), output.size()).ToLocalChecked(); + info.GetReturnValue().Set(returnValue); } -NAN_METHOD(address_decode) { +void address_decode(const Nan::FunctionCallbackInfo& info) { if (info.Length() < 1) return THROW_ERROR_EXCEPTION("You must provide one argument."); Local target = info[0]->ToObject(); @@ -158,19 +162,26 @@ NAN_METHOD(address_decode) { blobdata data; uint64_t prefix; - if (!tools::base58::decode_addr(input, prefix, data)) { NanReturnUndefined(); return; } + if (!tools::base58::decode_addr(input, prefix, data)) { + info.GetReturnValue().Set(Nan::Undefined()); + return; + } account_public_address adr; if (!::serialization::parse_binary(data, adr) || !crypto::check_key(adr.m_spend_public_key) || !crypto::check_key(adr.m_view_public_key)) { - if (!data.length()) { NanReturnUndefined(); return; } + if (!data.length()) { + info.GetReturnValue().Set(Nan::Undefined()); + return; + } data = uint64be_to_blob(prefix) + data; - NanReturnValue(NanNewBufferHandle(data.data(), data.size())); + v8::Local returnValue = Nan::CopyBuffer((char*)data.data(), data.size()).ToLocalChecked(); + info.GetReturnValue().Set(returnValue); } else { - NanReturnValue(NanNew(static_cast(prefix))); + info.GetReturnValue().Set(Nan::New(static_cast(prefix))); } } -NAN_METHOD(address_decode_integrated) { +void address_decode_integrated(const Nan::FunctionCallbackInfo& info) { if (info.Length() < 1) return THROW_ERROR_EXCEPTION("You must provide one argument."); Local target = info[0]->ToObject(); @@ -181,15 +192,22 @@ NAN_METHOD(address_decode_integrated) { blobdata data; uint64_t prefix; - if (!tools::base58::decode_addr(input, prefix, data)) { NanReturnUndefined(); return; } + if (!tools::base58::decode_addr(input, prefix, data)) { + info.GetReturnValue().Set(Nan::Undefined()); + return; + } integrated_address iadr; if (!::serialization::parse_binary(data, iadr) || !crypto::check_key(iadr.adr.m_spend_public_key) || !crypto::check_key(iadr.adr.m_view_public_key)) { - if (!data.length()) { NanReturnUndefined(); return; } + if (!data.length()) { + info.GetReturnValue().Set(Nan::Undefined()); + return; + } data = uint64be_to_blob(prefix) + data; - NanReturnValue(NanNewBufferHandle(data.data(), data.size())); + v8::Local returnValue = Nan::CopyBuffer((char*)data.data(), data.size()).ToLocalChecked(); + info.GetReturnValue().Set(returnValue); } else { - NanReturnValue(NanNew(static_cast(prefix))); + info.GetReturnValue().Set(Nan::New(static_cast(prefix))); } }