From fdea60e958da37a3a77349a2c14e3b37d5759301 Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Fri, 18 Feb 2022 04:35:42 +0530 Subject: [PATCH] src,buffer: evaluate THROW_AND_RETURN_IF_OOB() expression only once There's no need to evaluate the expression passed into the macro more than once. Fixes: https://github.com/nodejs/node/issues/41935 Signed-off-by: Darshan Sen PR-URL: https://github.com/nodejs/node/pull/41945 Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum Reviewed-By: Evan Lucas Reviewed-By: Anna Henningsen --- src/node_buffer.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 48df1323ca7215..be9324a8bd82ab 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -41,8 +41,9 @@ #define THROW_AND_RETURN_IF_OOB(r) \ do { \ - if ((r).IsNothing()) return; \ - if (!(r).FromJust()) \ + Maybe m = (r); \ + if (m.IsNothing()) return; \ + if (!m.FromJust()) \ return node::THROW_ERR_OUT_OF_RANGE(env, "Index out of range"); \ } while (0) \