From 86d169376f8949d9f55533be45e37a5734d13be7 Mon Sep 17 00:00:00 2001 From: Micah Kornfield Date: Sat, 2 Mar 2019 14:32:00 -0800 Subject: [PATCH 1/4] ARROW-4744: [C++][CI] Add static cast to input_len to avoid warning --- cpp/src/arrow/util/compression_snappy.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/src/arrow/util/compression_snappy.cc b/cpp/src/arrow/util/compression_snappy.cc index 058593fe13d..2113f98ab00 100644 --- a/cpp/src/arrow/util/compression_snappy.cc +++ b/cpp/src/arrow/util/compression_snappy.cc @@ -24,6 +24,7 @@ #include #include "arrow/status.h" +#include "arrow/util/logging.h" #include "arrow/util/macros.h" using std::size_t; @@ -73,7 +74,8 @@ Status SnappyCodec::Decompress(int64_t input_len, const uint8_t* input, int64_t SnappyCodec::MaxCompressedLen(int64_t input_len, const uint8_t* ARROW_ARG_UNUSED(input)) { - return snappy::MaxCompressedLength(input_len); + DCHECK_GE(input_len, 0); + return snappy::MaxCompressedLength(static_cast(input_len)); } Status SnappyCodec::Compress(int64_t input_len, const uint8_t* input, From 96e127e1685638759956cf921271dfb8fd7c62f6 Mon Sep 17 00:00:00 2001 From: Micah Kornfield Date: Sat, 2 Mar 2019 15:02:57 -0800 Subject: [PATCH 2/4] Fix other places where cast was happening --- cpp/src/arrow/util/compression_brotli.cc | 3 ++- cpp/src/arrow/util/compression_zstd.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/src/arrow/util/compression_brotli.cc b/cpp/src/arrow/util/compression_brotli.cc index 3d75253e11d..d37837d7d68 100644 --- a/cpp/src/arrow/util/compression_brotli.cc +++ b/cpp/src/arrow/util/compression_brotli.cc @@ -217,7 +217,8 @@ Status BrotliCodec::Decompress(int64_t input_len, const uint8_t* input, int64_t BrotliCodec::MaxCompressedLen(int64_t input_len, const uint8_t* ARROW_ARG_UNUSED(input)) { - return BrotliEncoderMaxCompressedSize(input_len); + DCHECK_GE(input_len, 0); + return BrotliEncoderMaxCompressedSize(static_cast(input_len)); } Status BrotliCodec::Compress(int64_t input_len, const uint8_t* input, diff --git a/cpp/src/arrow/util/compression_zstd.cc b/cpp/src/arrow/util/compression_zstd.cc index de9df8fc949..4972f434a3a 100644 --- a/cpp/src/arrow/util/compression_zstd.cc +++ b/cpp/src/arrow/util/compression_zstd.cc @@ -229,7 +229,8 @@ Status ZSTDCodec::Decompress(int64_t input_len, const uint8_t* input, int64_t ZSTDCodec::MaxCompressedLen(int64_t input_len, const uint8_t* ARROW_ARG_UNUSED(input)) { - return ZSTD_compressBound(input_len); + DCHECK_GE(input_len, 0); + return ZSTD_compressBound(static_cast(input_len)); } Status ZSTDCodec::Compress(int64_t input_len, const uint8_t* input, From 6b7c1f4eb9b3fdee59fd9d85d943e1b8cb140287 Mon Sep 17 00:00:00 2001 From: Micah Kornfield Date: Sat, 2 Mar 2019 15:26:19 -0800 Subject: [PATCH 3/4] more brotli fixes --- cpp/src/arrow/util/compression_brotli.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cpp/src/arrow/util/compression_brotli.cc b/cpp/src/arrow/util/compression_brotli.cc index d37837d7d68..8a9beb66cd7 100644 --- a/cpp/src/arrow/util/compression_brotli.cc +++ b/cpp/src/arrow/util/compression_brotli.cc @@ -204,9 +204,11 @@ Status BrotliCodec::Decompress(int64_t input_len, const uint8_t* input, Status BrotliCodec::Decompress(int64_t input_len, const uint8_t* input, int64_t output_buffer_len, uint8_t* output_buffer, int64_t* output_len) { - std::size_t output_size = output_buffer_len; - if (BrotliDecoderDecompress(input_len, input, &output_size, output_buffer) != - BROTLI_DECODER_RESULT_SUCCESS) { + DCHECK_GE(input_len, 0); + DCHECK_GE(output_buffer_len, 0); + std::size_t output_size = static_cast(output_buffer_len); + if (BrotliDecoderDecompress(static_cast(input_len), input, &output_size, + output_buffer) != BROTLI_DECODER_RESULT_SUCCESS) { return Status::IOError("Corrupt brotli compressed data."); } if (output_len) { @@ -224,10 +226,12 @@ int64_t BrotliCodec::MaxCompressedLen(int64_t input_len, Status BrotliCodec::Compress(int64_t input_len, const uint8_t* input, int64_t output_buffer_len, uint8_t* output_buffer, int64_t* output_len) { - std::size_t output_size = output_buffer_len; + DCHECK_GE(input_len, 0); + DCHECK_GE(output_buffer_len, 0); + std::size_t output_size = static_cast(output_buffer_len); if (BrotliEncoderCompress(kBrotliDefaultCompressionLevel, BROTLI_DEFAULT_WINDOW, - BROTLI_DEFAULT_MODE, input_len, input, &output_size, - output_buffer) == BROTLI_FALSE) { + BROTLI_DEFAULT_MODE, static_cast(input_len), input, + &output_size, output_buffer) == BROTLI_FALSE) { return Status::IOError("Brotli compression failure."); } *output_len = output_size; From 0dd4e6f5bfff2d6d15129b668cd510c1246aebb4 Mon Sep 17 00:00:00 2001 From: Micah Kornfield Date: Sat, 2 Mar 2019 16:19:03 -0800 Subject: [PATCH 4/4] Change mingw back to release. Cleanup some more conversion errors --- ci/appveyor-cpp-build-mingw.bat | 4 ++-- cpp/src/arrow/type_traits.h | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ci/appveyor-cpp-build-mingw.bat b/ci/appveyor-cpp-build-mingw.bat index 249ea1ab57d..bdd3b14462e 100644 --- a/ci/appveyor-cpp-build-mingw.bat +++ b/ci/appveyor-cpp-build-mingw.bat @@ -17,8 +17,8 @@ @echo on -set CMAKE_BUILD_TYPE=debug -set MESON_BUILD_TYPE=debug +set CMAKE_BUILD_TYPE=release +set MESON_BUILD_TYPE=release set INSTALL_DIR=%HOMEDRIVE%%HOMEPATH%\install set PATH=%INSTALL_DIR%\bin;%PATH% diff --git a/cpp/src/arrow/type_traits.h b/cpp/src/arrow/type_traits.h index df2cd09c5ec..5d3fed3cb20 100644 --- a/cpp/src/arrow/type_traits.h +++ b/cpp/src/arrow/type_traits.h @@ -75,7 +75,7 @@ struct CTypeTraits : public TypeTraits { using TensorType = ArrowTensorType; \ using CType = CType_; \ static constexpr int64_t bytes_required(int64_t elements) { \ - return elements * sizeof(CType_); \ + return elements * static_cast(sizeof(CType_)); \ } \ constexpr static bool is_parameter_free = true; \ static inline std::shared_ptr type_singleton() { return SingletonFn(); } \ @@ -113,7 +113,7 @@ struct TypeTraits { using ScalarType = Date64Scalar; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(int64_t); + return elements * static_cast(sizeof(int64_t)); } constexpr static bool is_parameter_free = true; static inline std::shared_ptr type_singleton() { return date64(); } @@ -126,7 +126,7 @@ struct TypeTraits { using ScalarType = Date32Scalar; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(int32_t); + return elements * static_cast(sizeof(int32_t)); } constexpr static bool is_parameter_free = true; static inline std::shared_ptr type_singleton() { return date32(); } @@ -139,7 +139,7 @@ struct TypeTraits { using ScalarType = TimestampScalar; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(int64_t); + return elements * static_cast(sizeof(int64_t)); } constexpr static bool is_parameter_free = false; }; @@ -151,7 +151,7 @@ struct TypeTraits { using ScalarType = Time32Scalar; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(int32_t); + return elements * static_cast(sizeof(int32_t)); } constexpr static bool is_parameter_free = false; }; @@ -163,7 +163,7 @@ struct TypeTraits { using ScalarType = Time64Scalar; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(int64_t); + return elements * static_cast(sizeof(int64_t)); } constexpr static bool is_parameter_free = false; }; @@ -176,7 +176,7 @@ struct TypeTraits { using TensorType = HalfFloatTensor; static constexpr int64_t bytes_required(int64_t elements) { - return elements * sizeof(uint16_t); + return elements * static_cast(sizeof(uint16_t)); } constexpr static bool is_parameter_free = true; static inline std::shared_ptr type_singleton() { return float16(); }