diff --git a/intrinsiccv/include/intrinsiccv/workspace/separable.h b/intrinsiccv/include/intrinsiccv/workspace/separable.h index 5398f1db4457a4ade9733679cc91b571c662ada0..4013cbf5ba4fb9a75c8868f329c3b3b6371a32b8 100644 --- a/intrinsiccv/include/intrinsiccv/workspace/separable.h +++ b/intrinsiccv/include/intrinsiccv/workspace/separable.h @@ -127,10 +127,6 @@ class SeparableFilterWorkspace final { Rows dst_rows, size_t channels, typename FilterType::BorderType border_type, FilterType filter) INTRINSICCV_STREAMING_COMPATIBLE { - if (INTRINSICCV_UNLIKELY(rect.width() == 0 || rect.height() == 0)) { - return; - } - // Border helper which calculates border offsets. typename FilterType::BorderInfoType vertical_border{rect.height(), border_type}; diff --git a/intrinsiccv/src/resize/resize_neon.cpp b/intrinsiccv/src/resize/resize_neon.cpp index 55c5e7317ec524f35e66879f7f93069301c9d07c..1e18a37fe188a0c3b959c885eb97a6ef1363f7df 100644 --- a/intrinsiccv/src/resize/resize_neon.cpp +++ b/intrinsiccv/src/resize/resize_neon.cpp @@ -25,10 +25,14 @@ static intrinsiccv_error_t check_dimensions(size_t src_dim, size_t dst_dim) { return INTRINSICCV_ERROR_RANGE; } +// Disable the warning, as the complexity is just above the threshold, it's +// better to leave it in one piece. +// NOLINTBEGIN(readability-function-cognitive-complexity) INTRINSICCV_TARGET_FN_ATTRS -static intrinsiccv_error_t check_resize_args( - const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, - uint8_t *dst, size_t dst_stride, size_t dst_width, size_t dst_height) { +intrinsiccv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, + size_t src_width, size_t src_height, + uint8_t *dst, size_t dst_stride, + size_t dst_width, size_t dst_height) { CHECK_POINTER_AND_STRIDE(src, src_stride); CHECK_POINTER_AND_STRIDE(dst, dst_stride); CHECK_IMAGE_SIZE(src_width, src_height); @@ -41,20 +45,6 @@ static intrinsiccv_error_t check_resize_args( return ret; } - return INTRINSICCV_OK; -} - -INTRINSICCV_TARGET_FN_ATTRS -intrinsiccv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, - size_t src_width, size_t src_height, - uint8_t *dst, size_t dst_stride, - size_t dst_width, size_t dst_height) { - if (intrinsiccv_error_t ret = - check_resize_args(src, src_stride, src_width, src_height, dst, - dst_stride, dst_width, dst_height)) { - return ret; - } - for (; src_height >= 2; src_height -= 2, src += (src_stride * 2), --dst_height, dst += dst_stride) { const uint8_t *src_l = src; @@ -129,5 +119,6 @@ intrinsiccv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, } return INTRINSICCV_OK; } +// NOLINTEND(readability-function-cognitive-complexity) } // namespace intrinsiccv::neon diff --git a/test/api/test_resize_linear.cpp b/test/api/test_resize_linear.cpp index a011a259b307f03f779301ecebe3da69024d6aab..86902d00ddb00c87e90d937cf7a5e64a7313899c 100644 --- a/test/api/test_resize_linear.cpp +++ b/test/api/test_resize_linear.cpp @@ -20,6 +20,10 @@ TEST(ResizeLinear, NotImplemented) { intrinsiccv_resize_linear_u8(src, 1, 1, 1, dst, 2, 2, 1)); EXPECT_EQ(INTRINSICCV_ERROR_NOT_IMPLEMENTED, intrinsiccv_resize_linear_u8(src, 1, 1, 1, dst, 1, 1, 2)); + EXPECT_EQ(INTRINSICCV_ERROR_NOT_IMPLEMENTED, + intrinsiccv_resize_linear_u8(src, 1, 1, 1, dst, 4, 4, 2)); + EXPECT_EQ(INTRINSICCV_ERROR_NOT_IMPLEMENTED, + intrinsiccv_resize_linear_u8(src, 1, 1, 1, dst, 2, 2, 4)); } TEST(ResizeLinear, NullPointer) { diff --git a/test/api/test_sobel.cpp b/test/api/test_sobel.cpp index ce08c4bfa5a801033fbcd2f6a193d67315e5fff3..62b22171dbdba98b10deb63a0b669d7c65434800 100644 --- a/test/api/test_sobel.cpp +++ b/test/api/test_sobel.cpp @@ -237,6 +237,12 @@ TYPED_TEST(Sobel, CannotAllocateImageHorizontal) { sobel_3x3_horizontal()( src, sizeof(src), dst, sizeof(dst), INTRINSICCV_MAX_IMAGE_PIXELS / 2, validSize, INTRINSICCV_MAXIMUM_CHANNEL_COUNT)); + + EXPECT_EQ(INTRINSICCV_ERROR_ALLOCATION, + sobel_3x3_vertical()(src, sizeof(src), dst, sizeof(dst), + INTRINSICCV_MAX_IMAGE_PIXELS / 2, + validSize, + INTRINSICCV_MAXIMUM_CHANNEL_COUNT)); MockMallocToFail::disable(); } #endif