Skip to content

Commit f08e2e0

Browse files
authored
src: use stack allocation in indexOf latin1 path
PR-URL: #62268 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Daniel Lemire <daniel@lemire.me>
1 parent 3db2206 commit f08e2e0

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

benchmark/buffers/buffer-indexof.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const searchStrings = [
1919

2020
const bench = common.createBenchmark(main, {
2121
search: searchStrings,
22-
encoding: ['undefined', 'utf8', 'ucs2'],
22+
encoding: ['undefined', 'utf8', 'ucs2', 'latin1'],
2323
type: ['buffer', 'string'],
2424
n: [5e4],
2525
}, {

src/node_buffer.cc

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,23 +1051,19 @@ void IndexOfString(const FunctionCallbackInfo<Value>& args) {
10511051
offset,
10521052
is_forward);
10531053
} else if (enc == LATIN1) {
1054-
uint8_t* needle_data = node::UncheckedMalloc<uint8_t>(needle_length);
1055-
if (needle_data == nullptr) {
1056-
return args.GetReturnValue().Set(-1);
1057-
}
1054+
MaybeStackBuffer<uint8_t> needle_data(needle_length);
10581055
StringBytes::Write(isolate,
1059-
reinterpret_cast<char*>(needle_data),
1056+
reinterpret_cast<char*>(needle_data.out()),
10601057
needle_length,
10611058
needle,
10621059
enc);
10631060

10641061
result = nbytes::SearchString(reinterpret_cast<const uint8_t*>(haystack),
10651062
haystack_length,
1066-
needle_data,
1063+
needle_data.out(),
10671064
needle_length,
10681065
offset,
10691066
is_forward);
1070-
free(needle_data);
10711067
}
10721068

10731069
args.GetReturnValue().Set(

0 commit comments

Comments
 (0)