Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPriyanka Kore <piyukore06@gmail.com>2019-12-01 16:35:18 +0300
committerMichaƫl Zasso <targos@protonmail.com>2019-12-09 12:23:02 +0300
commitcb69ff47f665a8fe90d07f3ece123a0161f088f4 (patch)
tree677c4c12fe18ba9674c623c5852afbeb09bafa38 /src
parentb51b26ffef23e2f00f462819518759c1d12e4121 (diff)
src: improve node_crypto.cc memory allocation
This avoids heap allocations in common cases PR-URL: https://github.com/nodejs/node/pull/30751 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/node_crypto.cc7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
index d1bd5471f3f..2d965bcbff5 100644
--- a/src/node_crypto.cc
+++ b/src/node_crypto.cc
@@ -2697,11 +2697,11 @@ void SSLWrap<Base>::GetSharedSigalgs(const FunctionCallbackInfo<Value>& args) {
Base* w;
ASSIGN_OR_RETURN_UNWRAP(&w, args.Holder());
Environment* env = w->ssl_env();
- std::vector<Local<Value>> ret_arr;
SSL* ssl = w->ssl_.get();
int nsig = SSL_get_shared_sigalgs(ssl, 0, nullptr, nullptr, nullptr, nullptr,
nullptr);
+ MaybeStackBuffer<Local<Value>, 16> ret_arr(nsig);
for (int i = 0; i < nsig; i++) {
int hash_nid;
@@ -2765,12 +2765,11 @@ void SSLWrap<Base>::GetSharedSigalgs(const FunctionCallbackInfo<Value>& args) {
} else {
sig_with_md += "UNDEF";
}
-
- ret_arr.push_back(OneByteString(env->isolate(), sig_with_md.c_str()));
+ ret_arr[i] = OneByteString(env->isolate(), sig_with_md.c_str());
}
args.GetReturnValue().Set(
- Array::New(env->isolate(), ret_arr.data(), ret_arr.size()));
+ Array::New(env->isolate(), ret_arr.out(), ret_arr.length()));
}