From a79bd3878389159a44b72b0e3eac9dca8a46568a Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 02:21:19 +0300 Subject: [PATCH 1/6] Drop some `NOLINT`s that are no longer needed --- bench/librawspeed/bitstreams/BitStreamerBenchmark.cpp | 1 - bench/librawspeed/bitstreams/BitStreamerJPEGBenchmark.cpp | 1 - bench/librawspeed/bitstreams/BitVacuumerBenchmark.cpp | 1 - bench/librawspeed/bitstreams/BitVacuumerJPEGBenchmark.cpp | 1 - bench/librawspeed/common/CommonBenchmark.cpp | 1 - .../decompressors/DeflateDecompressorBenchmark.cpp | 1 - .../interpolators/Cr2sRawInterpolatorBenchmark.cpp | 1 - src/librawspeed/codes/PrefixCodeLookupDecoder.h | 1 - src/librawspeed/decoders/Cr2Decoder.cpp | 1 - src/librawspeed/decompressors/PanasonicV5Decompressor.cpp | 5 +---- src/librawspeed/decompressors/PanasonicV6Decompressor.cpp | 6 +----- src/librawspeed/decompressors/PanasonicV6Decompressor.h | 2 -- src/librawspeed/decompressors/PanasonicV7Decompressor.cpp | 6 +----- src/librawspeed/decompressors/PanasonicV7Decompressor.h | 2 -- src/librawspeed/tiff/TiffEntry.cpp | 1 - test/librawspeed/metadata/CameraSensorInfoTest.cpp | 4 ++-- 16 files changed, 5 insertions(+), 30 deletions(-) diff --git a/bench/librawspeed/bitstreams/BitStreamerBenchmark.cpp b/bench/librawspeed/bitstreams/BitStreamerBenchmark.cpp index d1ea1514e..ad27035aa 100644 --- a/bench/librawspeed/bitstreams/BitStreamerBenchmark.cpp +++ b/bench/librawspeed/bitstreams/BitStreamerBenchmark.cpp @@ -110,7 +110,6 @@ inline void CustomArguments(benchmark::internal::Benchmark* b) { } b->RangeMultiplier(2); - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(256 << 20); } else { diff --git a/bench/librawspeed/bitstreams/BitStreamerJPEGBenchmark.cpp b/bench/librawspeed/bitstreams/BitStreamerJPEGBenchmark.cpp index 11b9b394f..2345ec64f 100644 --- a/bench/librawspeed/bitstreams/BitStreamerJPEGBenchmark.cpp +++ b/bench/librawspeed/bitstreams/BitStreamerJPEGBenchmark.cpp @@ -96,7 +96,6 @@ void CustomArguments(benchmark::internal::Benchmark* b) { return; } - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(MaxBytesOptimal); } else { diff --git a/bench/librawspeed/bitstreams/BitVacuumerBenchmark.cpp b/bench/librawspeed/bitstreams/BitVacuumerBenchmark.cpp index 979586893..23b35e08a 100644 --- a/bench/librawspeed/bitstreams/BitVacuumerBenchmark.cpp +++ b/bench/librawspeed/bitstreams/BitVacuumerBenchmark.cpp @@ -196,7 +196,6 @@ void CustomArguments(benchmark::internal::Benchmark* b) { return; } - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(MaxBytesOptimal); } else { diff --git a/bench/librawspeed/bitstreams/BitVacuumerJPEGBenchmark.cpp b/bench/librawspeed/bitstreams/BitVacuumerJPEGBenchmark.cpp index 189b6ce09..cb1b2853a 100644 --- a/bench/librawspeed/bitstreams/BitVacuumerJPEGBenchmark.cpp +++ b/bench/librawspeed/bitstreams/BitVacuumerJPEGBenchmark.cpp @@ -153,7 +153,6 @@ void CustomArguments(benchmark::internal::Benchmark* b) { return; } - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(MaxBytesOptimal); } else { diff --git a/bench/librawspeed/common/CommonBenchmark.cpp b/bench/librawspeed/common/CommonBenchmark.cpp index 94b963983..f17f617a0 100644 --- a/bench/librawspeed/common/CommonBenchmark.cpp +++ b/bench/librawspeed/common/CommonBenchmark.cpp @@ -85,7 +85,6 @@ inline void CustomArguments(benchmark::internal::Benchmark* b) { } b->RangeMultiplier(2); - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((false)) { b->Arg(MaxPixelsOptimal); } else { diff --git a/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp b/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp index 536707b6b..22a5de44f 100644 --- a/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp +++ b/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp @@ -127,7 +127,6 @@ inline void CustomArgs(benchmark::internal::Benchmark* b) { b->RangeMultiplier(2); // FIXME: appears to not like 1GPix+ buffers - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(128 << 20); } else { diff --git a/bench/librawspeed/interpolators/Cr2sRawInterpolatorBenchmark.cpp b/bench/librawspeed/interpolators/Cr2sRawInterpolatorBenchmark.cpp index e908045d3..ddb0c8d40 100644 --- a/bench/librawspeed/interpolators/Cr2sRawInterpolatorBenchmark.cpp +++ b/bench/librawspeed/interpolators/Cr2sRawInterpolatorBenchmark.cpp @@ -95,7 +95,6 @@ inline void CustomArguments(benchmark::internal::Benchmark* b) { } b->RangeMultiplier(2); - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((true)) { b->Arg(2 * 3 * 2 * 1'000'000); } else { diff --git a/src/librawspeed/codes/PrefixCodeLookupDecoder.h b/src/librawspeed/codes/PrefixCodeLookupDecoder.h index 87ce51122..d1e342337 100644 --- a/src/librawspeed/codes/PrefixCodeLookupDecoder.h +++ b/src/librawspeed/codes/PrefixCodeLookupDecoder.h @@ -81,7 +81,6 @@ class PrefixCodeLookupDecoder : public AbstractPrefixCodeDecoder { PrefixCodeLookupDecoder(PrefixCode) = delete; PrefixCodeLookupDecoder(const PrefixCode&) = delete; - // NOLINTNEXTLINE(cppcoreguidelines-rvalue-reference-param-not-moved) PrefixCodeLookupDecoder(PrefixCode&&) = delete; protected: diff --git a/src/librawspeed/decoders/Cr2Decoder.cpp b/src/librawspeed/decoders/Cr2Decoder.cpp index 8c6b84846..35cf5fc01 100644 --- a/src/librawspeed/decoders/Cr2Decoder.cpp +++ b/src/librawspeed/decoders/Cr2Decoder.cpp @@ -343,7 +343,6 @@ getBlackAndWhiteLevelOffsetsInColorData(ColorDataFormat f, __builtin_unreachable(); } case ColorData6: - // NOLINTNEXTLINE(hicpp-multiway-paths-covered) switch (*colorDataVersion) { case 10: return {{479, 484}}; diff --git a/src/librawspeed/decompressors/PanasonicV5Decompressor.cpp b/src/librawspeed/decompressors/PanasonicV5Decompressor.cpp index e8df4c1f5..f346c5a38 100644 --- a/src/librawspeed/decompressors/PanasonicV5Decompressor.cpp +++ b/src/librawspeed/decompressors/PanasonicV5Decompressor.cpp @@ -240,10 +240,7 @@ void PanasonicV5Decompressor::decompressInternal() const noexcept { schedule(static) default(none) #endif for (const auto& block : - Array1DRef(blocks.data(), - implicit_cast( - blocks.size()))) { // NOLINT(openmp-exception-escape): we - // have checked size already. + Array1DRef(blocks.data(), implicit_cast(blocks.size()))) { try { processBlock(block); } catch (...) { diff --git a/src/librawspeed/decompressors/PanasonicV6Decompressor.cpp b/src/librawspeed/decompressors/PanasonicV6Decompressor.cpp index ca26052ee..028f4a845 100644 --- a/src/librawspeed/decompressors/PanasonicV6Decompressor.cpp +++ b/src/librawspeed/decompressors/PanasonicV6Decompressor.cpp @@ -175,7 +175,6 @@ PanasonicV6Decompressor::PanasonicV6Decompressor(RawImage img, template inline void __attribute__((always_inline)) -// NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. PanasonicV6Decompressor::decompressBlock(ByteStream& rowInput, int row, int col) const noexcept { const Array2DRef out(mRaw->getU16DataAsUncroppedArray2DRef()); @@ -220,7 +219,6 @@ PanasonicV6Decompressor::decompressBlock(ByteStream& rowInput, int row, } } -// NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. template void PanasonicV6Decompressor::decompressRow(int row) const noexcept { invariant(mRaw->dim.x % dsc.PixelsPerBlock == 0); @@ -239,9 +237,7 @@ void PanasonicV6Decompressor::decompressInternal() const noexcept { #pragma omp parallel for num_threads(rawspeed_get_number_of_processor_cores()) \ schedule(static) default(none) #endif - for (int row = 0; row < mRaw->dim.y; - ++row) { // NOLINT(openmp-exception-escape): we know no exceptions will - // be thrown. + for (int row = 0; row < mRaw->dim.y; ++row) { try { decompressRow(row); } catch (...) { diff --git a/src/librawspeed/decompressors/PanasonicV6Decompressor.h b/src/librawspeed/decompressors/PanasonicV6Decompressor.h index 7fed5da6c..1b097ed4f 100644 --- a/src/librawspeed/decompressors/PanasonicV6Decompressor.h +++ b/src/librawspeed/decompressors/PanasonicV6Decompressor.h @@ -43,10 +43,8 @@ class PanasonicV6Decompressor final : public AbstractDecompressor { template inline void __attribute__((always_inline)) - // NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. decompressBlock(ByteStream& rowInput, int row, int col) const noexcept; - // NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. template void decompressRow(int row) const noexcept; template void decompressInternal() const noexcept; diff --git a/src/librawspeed/decompressors/PanasonicV7Decompressor.cpp b/src/librawspeed/decompressors/PanasonicV7Decompressor.cpp index b37915094..f9d1636c3 100644 --- a/src/librawspeed/decompressors/PanasonicV7Decompressor.cpp +++ b/src/librawspeed/decompressors/PanasonicV7Decompressor.cpp @@ -65,7 +65,6 @@ PanasonicV7Decompressor::PanasonicV7Decompressor(RawImage img, } inline void __attribute__((always_inline)) -// NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. PanasonicV7Decompressor::decompressBlock( ByteStream block, CroppedArray1DRef out) noexcept { invariant(out.size() == PixelsPerBlock); @@ -74,7 +73,6 @@ PanasonicV7Decompressor::decompressBlock( out(pix) = implicit_cast(pump.getBits(BitsPerSample)); } -// NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. void PanasonicV7Decompressor::decompressRow(int row) const noexcept { const Array2DRef out(mRaw->getU16DataAsUncroppedArray2DRef()); Array1DRef outRow = out[row]; @@ -95,9 +93,7 @@ void PanasonicV7Decompressor::decompress() const { #pragma omp parallel for num_threads(rawspeed_get_number_of_processor_cores()) \ schedule(static) default(none) #endif - for (int row = 0; row < mRaw->dim.y; - ++row) { // NOLINT(openmp-exception-escape): we know no exceptions will - // be thrown. + for (int row = 0; row < mRaw->dim.y; ++row) { try { decompressRow(row); } catch (...) { diff --git a/src/librawspeed/decompressors/PanasonicV7Decompressor.h b/src/librawspeed/decompressors/PanasonicV7Decompressor.h index 0fbe7e2e0..6fe78d320 100644 --- a/src/librawspeed/decompressors/PanasonicV7Decompressor.h +++ b/src/librawspeed/decompressors/PanasonicV7Decompressor.h @@ -40,10 +40,8 @@ class PanasonicV7Decompressor final : public AbstractDecompressor { (CHAR_BIT * BytesPerBlock) / BitsPerSample; static inline void __attribute__((always_inline)) - // NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. decompressBlock(ByteStream block, CroppedArray1DRef out) noexcept; - // NOLINTNEXTLINE(bugprone-exception-escape): no exceptions will be thrown. void decompressRow(int row) const noexcept; public: diff --git a/src/librawspeed/tiff/TiffEntry.cpp b/src/librawspeed/tiff/TiffEntry.cpp index db1d5e4c6..a00a5f9f4 100644 --- a/src/librawspeed/tiff/TiffEntry.cpp +++ b/src/librawspeed/tiff/TiffEntry.cpp @@ -81,7 +81,6 @@ TiffEntry::TiffEntry(TiffIFD* parent_, ByteStream& bs) TiffTag::MAKERNOTE_ALT, TiffTag::FUJI_RAW_IFD, TiffTag::SUBIFDS, TiffTag::EXIFIFDPOINTER})) { // preserve offset for SUB_IFD/EXIF/MAKER_NOTE data - // NOLINTNEXTLINE(readability-simplify-boolean-expr) if constexpr ((false)) { // limit access to range from 0 to data_offset+byte_size data = bs.getSubStream(data_offset, byte_size); diff --git a/test/librawspeed/metadata/CameraSensorInfoTest.cpp b/test/librawspeed/metadata/CameraSensorInfoTest.cpp index 4ce51e438..943a2858e 100644 --- a/test/librawspeed/metadata/CameraSensorInfoTest.cpp +++ b/test/librawspeed/metadata/CameraSensorInfoTest.cpp @@ -120,7 +120,7 @@ TEST_P(CameraSensorInfoTestDumb, AssignmentConstructor) { ASSERT_NO_THROW({ const CameraSensorInfo InfoOrig(mBlackLevel, mWhiteLevel, mMinIso, mMaxIso, mBlackLevelSeparate); - CameraSensorInfo Info(InfoOrig); // NOLINT(foo): trying to test the copy + CameraSensorInfo Info(InfoOrig); }); ASSERT_NO_THROW({ @@ -146,7 +146,7 @@ TEST_P(CameraSensorInfoTestDumb, AssignmentConstructorGetters) { { const CameraSensorInfo InfoOrig(mBlackLevel, mWhiteLevel, mMinIso, mMaxIso, mBlackLevelSeparate); - CameraSensorInfo Info(InfoOrig); // NOLINT + CameraSensorInfo Info(InfoOrig); checkHelper(Info); checkHelper(Info, InfoOrig); From 4868195c3e840398c52b8f2975e283137bc765b4 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 02:44:00 +0300 Subject: [PATCH 2/6] Always specify a specific check in `NOLINT` --- .../decompressors/DeflateDecompressorBenchmark.cpp | 3 ++- src/external/AddressSanitizer.h | 3 ++- .../decompressors/AbstractDngDecompressor.cpp | 3 ++- .../decompressors/DeflateDecompressor.cpp | 14 ++++++++------ .../decompressors/DeflateDecompressor.h | 5 +++-- src/utilities/identify/rawspeed-identify.cpp | 3 ++- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp b/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp index 22a5de44f..69be11350 100644 --- a/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp +++ b/bench/librawspeed/decompressors/DeflateDecompressorBenchmark.cpp @@ -105,7 +105,8 @@ inline void BM_DeflateDecompressor(benchmark::State& state) { break; } - std::unique_ptr uBuffer; // NOLINT + // NOLINTNEXTLINE(modernize-avoid-c-arrays) + std::unique_ptr uBuffer; for (auto _ : state) { DeflateDecompressor d(buf, mRaw, predictor, BPS::value); diff --git a/src/external/AddressSanitizer.h b/src/external/AddressSanitizer.h index 48faeeabd..ad6b78dce 100644 --- a/src/external/AddressSanitizer.h +++ b/src/external/AddressSanitizer.h @@ -63,7 +63,8 @@ inline void ASan::UnPoisonMemoryRegion(const volatile void* addr, size_t size) { __asan_unpoison_memory_region(addr, size); } inline bool ASan::RegionIsPoisoned(const volatile void* addr, size_t size) { - auto* beg = const_cast(addr); // NOLINT + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-const-cast) + auto* beg = const_cast(addr); return nullptr != __asan_region_is_poisoned(beg, size); } #else diff --git a/src/librawspeed/decompressors/AbstractDngDecompressor.cpp b/src/librawspeed/decompressors/AbstractDngDecompressor.cpp index 0d317d8a6..ffe69bb4c 100644 --- a/src/librawspeed/decompressors/AbstractDngDecompressor.cpp +++ b/src/librawspeed/decompressors/AbstractDngDecompressor.cpp @@ -130,7 +130,8 @@ template <> void AbstractDngDecompressor::decompressThread<7>() const noexcept { #ifdef HAVE_ZLIB template <> void AbstractDngDecompressor::decompressThread<8>() const noexcept { - std::unique_ptr uBuffer; // NOLINT + // NOLINTNEXTLINE(modernize-avoid-c-arrays) + std::unique_ptr uBuffer; #ifdef HAVE_OPENMP #pragma omp for schedule(static) diff --git a/src/librawspeed/decompressors/DeflateDecompressor.cpp b/src/librawspeed/decompressors/DeflateDecompressor.cpp index b6fad752e..291f9b971 100644 --- a/src/librawspeed/decompressors/DeflateDecompressor.cpp +++ b/src/librawspeed/decompressors/DeflateDecompressor.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -130,17 +131,18 @@ inline void decodeFPDeltaRow(Array1DRef src, } // namespace -void DeflateDecompressor::decode( - std::unique_ptr* uBuffer, // NOLINT - iPoint2D maxDim, iPoint2D dim, iPoint2D off) { +// NOLINTNEXTLINE(modernize-avoid-c-arrays) +void DeflateDecompressor::decode(std::unique_ptr* uBuffer, + iPoint2D maxDim, iPoint2D dim, iPoint2D off) { int bytesps = bps / 8; invariant(bytesps >= 2 && bytesps <= 4); auto dstLen = implicit_cast(bytesps * maxDim.area()); - if (!*uBuffer) - *uBuffer = - std::unique_ptr(new unsigned char[dstLen]); // NOLINT + if (!*uBuffer) { + // NOLINTNEXTLINE(modernize-avoid-c-arrays) + *uBuffer = std::unique_ptr(new unsigned char[dstLen]); + } Array2DRef tmp(uBuffer->get(), bytesps * maxDim.x, maxDim.y); diff --git a/src/librawspeed/decompressors/DeflateDecompressor.h b/src/librawspeed/decompressors/DeflateDecompressor.h index fcfb07e16..8fbe9acc0 100644 --- a/src/librawspeed/decompressors/DeflateDecompressor.h +++ b/src/librawspeed/decompressors/DeflateDecompressor.h @@ -42,8 +42,9 @@ class DeflateDecompressor final : public AbstractDecompressor { public: DeflateDecompressor(Buffer bs, RawImage img, int predictor, int bps_); - void decode(std::unique_ptr* uBuffer, // NOLINT - iPoint2D maxDim, iPoint2D dim, iPoint2D off); + // NOLINTNEXTLINE(modernize-avoid-c-arrays) + void decode(std::unique_ptr* uBuffer, iPoint2D maxDim, + iPoint2D dim, iPoint2D off); }; } // namespace rawspeed diff --git a/src/utilities/identify/rawspeed-identify.cpp b/src/utilities/identify/rawspeed-identify.cpp index cb1d5642d..872ca6199 100644 --- a/src/utilities/identify/rawspeed-identify.cpp +++ b/src/utilities/identify/rawspeed-identify.cpp @@ -110,7 +110,8 @@ using rawspeed::RawParser; using rawspeed::RawspeedException; using rawspeed::identify::find_cameras_xml; -int main(int argc_, char* argv_[]) { // NOLINT +// NOLINTNEXTLINE(readability-function-size) +int main(int argc_, char* argv_[]) { auto argv = rawspeed::Array1DRef(argv_, argc_); if (argv.size() != 2) { From bfa4d6d4b229fc8c97e99e9fa0f1f0534379092a Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 02:50:09 +0300 Subject: [PATCH 3/6] clang-tidy: un-disable checks that no longer issue any unfixed diags --- .clang-tidy | 1 - 1 file changed, 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 160ab2aed..9e381dce3 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -112,7 +112,6 @@ Checks: > -misc-unused-parameters, -misc-unused-using-decls, -modernize-use-trailing-return-type, - -openmp-exception-escape, -portability-simd-intrinsics, -readability-container-data-pointer, -readability-identifier-length, From c4f054da76fde9965ba188adca2e78e120d5b14c Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 02:54:20 +0300 Subject: [PATCH 4/6] CMake: fix `jpeg_mem_src` detection --- cmake/Modules/CheckJPEGSymbols.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/CheckJPEGSymbols.cmake b/cmake/Modules/CheckJPEGSymbols.cmake index 4dd53dfe7..6a7b745a2 100644 --- a/cmake/Modules/CheckJPEGSymbols.cmake +++ b/cmake/Modules/CheckJPEGSymbols.cmake @@ -7,6 +7,7 @@ set(CMAKE_REQUIRED_FLAGS_SAVE "${CMAKE_REQUIRED_FLAGS}") # Workaround cmake-3.25 bug. set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wno-newline-eof") set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wno-old-style-cast") +set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wno-unsafe-buffer-usage") set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES_SAVE};${JPEG_INCLUDE_DIRS}") set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES_SAVE};${JPEG_LIBRARIES}") From 6d38674a707a425cdd66c5d975bb00f93f4699d1 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 03:01:43 +0300 Subject: [PATCH 5/6] And back to using specific opensuse mirror, `provo-mirror.opensuse.org` is still broken https://bugzilla.opensuse.org/show_bug.cgi?id=1202041 --- .github/workflows/CI-linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI-linux.yml b/.github/workflows/CI-linux.yml index 25922e918..939d45844 100644 --- a/.github/workflows/CI-linux.yml +++ b/.github/workflows/CI-linux.yml @@ -145,7 +145,7 @@ jobs: eatmydata apt-get install clang-format-${{ inputs.compiler-version }} clang-tidy-${{ inputs.compiler-version }} eatmydata apt-get install curl gpg - echo 'deb http://download.opensuse.org/repositories/graphics:/darktable:/master/Debian_Unstable/ /' | tee /etc/apt/sources.list + echo 'deb https://ftp.gwdg.de//pub/opensuse/repositories/graphics%3A/darktable%3A/master/Debian_Unstable/ /' | tee /etc/apt/sources.list curl -fsSL https://download.opensuse.org/repositories/graphics:darktable:master/Debian_Unstable/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable_master.gpg > /dev/null apt-get update eatmydata apt-get install rawspeed-clang-tidy-module From 541ee1019338901dbb3486a838b9a11830148ec4 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 17 Mar 2024 03:21:52 +0300 Subject: [PATCH 6/6] clang-tidy: enable `readability-avoid-nested-conditional-operator`, good stuff --- .clang-tidy | 1 - src/librawspeed/decoders/NefDecoder.cpp | 14 ++++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 9e381dce3..d5656431c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -118,7 +118,6 @@ Checks: > -readability-implicit-bool-conversion, -readability-inconsistent-declaration-parameter-name, -readability-magic-numbers, - -readability-avoid-nested-conditional-operator, -rawspeed-std-array-no-operator-at WarningsAsErrors: '*' diff --git a/src/librawspeed/decoders/NefDecoder.cpp b/src/librawspeed/decoders/NefDecoder.cpp index 5ae7920bf..4982be6dc 100644 --- a/src/librawspeed/decoders/NefDecoder.cpp +++ b/src/librawspeed/decoders/NefDecoder.cpp @@ -830,10 +830,16 @@ std::vector NefDecoder::gammaCurve(double pwr, double ts, int imax) { const double r = static_cast(i) / imax; if (r >= 1) continue; - auto v = - (r < g[2] ? r / g[1] - : (std::abs(g[0]) > 0 ? pow((r + g[4]) / (1 + g[4]), 1 / g[0]) - : exp((r - 1) / g[2]))); + double v; + if (r < g[2]) { + v = r / g[1]; + } else { + if (std::abs(g[0]) > 0) { + v = pow((r + g[4]) / (1 + g[4]), 1 / g[0]); + } else { + v = exp((r - 1) / g[2]); + } + } curve[i] = static_cast(0x10000 * v); }