|
18 | 18 |
|
19 | 19 | #define MIN(a, b) ((a) < (b) ? (a) : (b))
|
20 | 20 |
|
21 |
| -#define CHECK_NOT_OOB(r) \ |
| 21 | +#define THROW_AND_RETURN_IF_OOB(r) \ |
22 | 22 | do { \
|
23 | 23 | if (!(r)) return env->ThrowRangeError("out of range index"); \
|
24 | 24 | } while (0)
|
|
43 | 43 | #define SLICE_START_END(start_arg, end_arg, end_max) \
|
44 | 44 | size_t start; \
|
45 | 45 | size_t end; \
|
46 |
| - CHECK_NOT_OOB(ParseArrayIndex(start_arg, 0, &start)); \ |
47 |
| - CHECK_NOT_OOB(ParseArrayIndex(end_arg, end_max, &end)); \ |
| 46 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(start_arg, 0, &start)); \ |
| 47 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(end_arg, end_max, &end)); \ |
48 | 48 | if (end < start) end = start; \
|
49 |
| - CHECK_NOT_OOB(end <= end_max); \ |
| 49 | + THROW_AND_RETURN_IF_OOB(end <= end_max); \ |
50 | 50 | size_t length = end - start;
|
51 | 51 |
|
52 | 52 | #define BUFFER_MALLOC(length) \
|
@@ -578,9 +578,9 @@ void Copy(const FunctionCallbackInfo<Value> &args) {
|
578 | 578 | size_t source_start;
|
579 | 579 | size_t source_end;
|
580 | 580 |
|
581 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[1], 0, &target_start)); |
582 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[2], 0, &source_start)); |
583 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[3], ts_obj_length, &source_end)); |
| 581 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[1], 0, &target_start)); |
| 582 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[2], 0, &source_start)); |
| 583 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[3], ts_obj_length, &source_end)); |
584 | 584 |
|
585 | 585 | // Copy 0 bytes; we're done
|
586 | 586 | if (target_start >= target_length || source_start >= source_end)
|
@@ -709,11 +709,12 @@ void StringWrite(const FunctionCallbackInfo<Value>& args) {
|
709 | 709 | size_t offset;
|
710 | 710 | size_t max_length;
|
711 | 711 |
|
712 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[1], 0, &offset)); |
| 712 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[1], 0, &offset)); |
713 | 713 | if (offset > ts_obj_length)
|
714 | 714 | return env->ThrowRangeError("Offset is out of bounds");
|
715 | 715 |
|
716 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[2], ts_obj_length - offset, &max_length)); |
| 716 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[2], ts_obj_length - offset, |
| 717 | + &max_length)); |
717 | 718 |
|
718 | 719 | max_length = MIN(ts_obj_length - offset, max_length);
|
719 | 720 |
|
@@ -838,8 +839,8 @@ void WriteFloatGeneric(const FunctionCallbackInfo<Value>& args) {
|
838 | 839 | size_t memcpy_num = sizeof(T);
|
839 | 840 |
|
840 | 841 | if (should_assert) {
|
841 |
| - CHECK_NOT_OOB(offset + memcpy_num >= memcpy_num); |
842 |
| - CHECK_NOT_OOB(offset + memcpy_num <= ts_obj_length); |
| 842 | + THROW_AND_RETURN_IF_OOB(offset + memcpy_num >= memcpy_num); |
| 843 | + THROW_AND_RETURN_IF_OOB(offset + memcpy_num <= ts_obj_length); |
843 | 844 | }
|
844 | 845 |
|
845 | 846 | if (offset + memcpy_num > ts_obj_length)
|
@@ -915,10 +916,10 @@ void CompareOffset(const FunctionCallbackInfo<Value> &args) {
|
915 | 916 | size_t source_end;
|
916 | 917 | size_t target_end;
|
917 | 918 |
|
918 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[2], 0, &target_start)); |
919 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[3], 0, &source_start)); |
920 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[4], target_length, &target_end)); |
921 |
| - CHECK_NOT_OOB(ParseArrayIndex(args[5], ts_obj_length, &source_end)); |
| 919 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[2], 0, &target_start)); |
| 920 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[3], 0, &source_start)); |
| 921 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[4], target_length, &target_end)); |
| 922 | + THROW_AND_RETURN_IF_OOB(ParseArrayIndex(args[5], ts_obj_length, &source_end)); |
922 | 923 |
|
923 | 924 | if (source_start > ts_obj_length)
|
924 | 925 | return env->ThrowRangeError("out of range index");
|
|
0 commit comments