This is an automated email from the ASF dual-hosted git repository.
apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new ad1697e ARROW-4862: [C++] Fix gcc warnings in CHECKIN
ad1697e is described below
commit ad1697e5d25eeaff5630421f55b0120f45cf0ce1
Author: François Saint-Jacques <[email protected]>
AuthorDate: Thu Mar 21 14:32:10 2019 +0100
ARROW-4862: [C++] Fix gcc warnings in CHECKIN
- The recent change in DCHECK* (removing the ARROW_IGNORE_EXPR) added
new compilation warnings. The simplest way to disable this is to
disable unused variables or sprinkle ARROW_IGNORE_EXPR in a lot of
places. I went for the first.
- Added some checks to `system` return code in plasma tests
- Disable `-Wstrict-overflow` for ArrayBuilder::CheckCapacity
Author: François Saint-Jacques <[email protected]>
Closes #3976 from fsaintjacques/ARROW-4962-gcc-warnings and squashes the
following commits:
247e4a71e <François Saint-Jacques> Formating
64e87b484 <François Saint-Jacques> Abdicate to gcc
7bdf30cc1 <François Saint-Jacques> Add PLASMA_CHECK_SYSTEM
393920fce <François Saint-Jacques> Remove disable warning
b5853b519 <François Saint-Jacques> Improve NullBuilder warnings
fb775c7c4 <François Saint-Jacques> ARROW-4892: Fix gcc warnings in CHECKIN
---
cpp/cmake_modules/SetupCxxFlags.cmake | 2 +-
cpp/src/arrow/array/builder_base.h | 2 ++
cpp/src/arrow/array/builder_primitive.h | 12 +++---------
cpp/src/plasma/test-util.h | 7 +++++++
cpp/src/plasma/test/client_tests.cc | 12 +++++++-----
cpp/src/plasma/test/external_store_tests.cc | 12 +++++++-----
6 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake
b/cpp/cmake_modules/SetupCxxFlags.cmake
index deb2742..e9d2695 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -164,7 +164,7 @@ if("${BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN")
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-unknown-warning-option
-Werror")
elseif("${COMPILER_FAMILY}" STREQUAL "gcc")
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall \
--Wno-conversion -Wno-sign-conversion")
+-Wno-conversion -Wno-sign-conversion -Wno-unused-variable")
# Treat all compiler warnings as errors
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror")
diff --git a/cpp/src/arrow/array/builder_base.h
b/cpp/src/arrow/array/builder_base.h
index ebe1ece..ee35407 100644
--- a/cpp/src/arrow/array/builder_base.h
+++ b/cpp/src/arrow/array/builder_base.h
@@ -170,9 +170,11 @@ class ARROW_EXPORT ArrayBuilder {
if (new_capacity < 0) {
return Status::Invalid("Resize capacity must be positive");
}
+
if (new_capacity < old_capacity) {
return Status::Invalid("Resize cannot downsize");
}
+
return Status::OK();
}
diff --git a/cpp/src/arrow/array/builder_primitive.h
b/cpp/src/arrow/array/builder_primitive.h
index 1025b4e..21f87b2 100644
--- a/cpp/src/arrow/array/builder_primitive.h
+++ b/cpp/src/arrow/array/builder_primitive.h
@@ -34,20 +34,14 @@ class ARROW_EXPORT NullBuilder : public ArrayBuilder {
/// \brief Append the specified number of null elements
Status AppendNulls(int64_t length) {
- auto new_length = length_ + length;
- ARROW_RETURN_NOT_OK(CheckCapacity(new_length, length_));
+ if (length < 0) return Status::Invalid("length must be positive");
null_count_ += length;
- length_ = new_length;
+ length_ += length;
return Status::OK();
}
/// \brief Append a single null element
- Status AppendNull() {
- ARROW_RETURN_NOT_OK(CheckCapacity(length_ + 1, length_));
- ++null_count_;
- ++length_;
- return Status::OK();
- }
+ Status AppendNull() { return AppendNulls(1); }
Status Append(std::nullptr_t) { return AppendNull(); }
diff --git a/cpp/src/plasma/test-util.h b/cpp/src/plasma/test-util.h
index 6bd501b..3173d94 100644
--- a/cpp/src/plasma/test-util.h
+++ b/cpp/src/plasma/test-util.h
@@ -37,6 +37,13 @@ ObjectID random_object_id() {
return result;
}
+#define PLASMA_CHECK_SYSTEM(expr) \
+ do { \
+ int status__ = (expr); \
+ EXPECT_TRUE(WIFEXITED(status__)); \
+ EXPECT_EQ(WEXITSTATUS(status__), 0); \
+ } while (false);
+
} // namespace plasma
#endif // PLASMA_TEST_UTIL_H
diff --git a/cpp/src/plasma/test/client_tests.cc
b/cpp/src/plasma/test/client_tests.cc
index d708e94..4dd0c06 100644
--- a/cpp/src/plasma/test/client_tests.cc
+++ b/cpp/src/plasma/test/client_tests.cc
@@ -62,7 +62,7 @@ class TestPlasmaStore : public ::testing::Test {
std::string plasma_command =
plasma_directory + "/plasma_store_server -m 10000000 -s " +
store_socket_name_ +
" 1> /dev/null 2> /dev/null & " + "echo $! > " + store_socket_name_ +
".pid";
- system(plasma_command.c_str());
+ PLASMA_CHECK_SYSTEM(system(plasma_command.c_str()));
ARROW_CHECK_OK(client_.Connect(store_socket_name_, ""));
ARROW_CHECK_OK(client2_.Connect(store_socket_name_, ""));
}
@@ -73,12 +73,14 @@ class TestPlasmaStore : public ::testing::Test {
#ifdef COVERAGE_BUILD
// Ask plasma_store to exit gracefully and give it time to write out
// coverage files
- std::string plasma_term_command = "kill -TERM `cat " + store_socket_name_
+ ".pid`";
- system(plasma_term_command.c_str());
+ std::string plasma_term_command =
+ "kill -TERM `cat " + store_socket_name_ + ".pid` || exit 0";
+ PLASMA_CHECK_SYSTEM(system(plasma_term_command.c_str()));
std::this_thread::sleep_for(std::chrono::milliseconds(200));
#endif
- std::string plasma_kill_command = "kill -KILL `cat " + store_socket_name_
+ ".pid`";
- system(plasma_kill_command.c_str());
+ std::string plasma_kill_command =
+ "kill -KILL `cat " + store_socket_name_ + ".pid` || exit 0";
+ PLASMA_CHECK_SYSTEM(system(plasma_kill_command.c_str()));
}
void CreateObject(PlasmaClient& client, const ObjectID& object_id,
diff --git a/cpp/src/plasma/test/external_store_tests.cc
b/cpp/src/plasma/test/external_store_tests.cc
index 5282328..26b10e2 100644
--- a/cpp/src/plasma/test/external_store_tests.cc
+++ b/cpp/src/plasma/test/external_store_tests.cc
@@ -64,7 +64,7 @@ class TestPlasmaStoreWithExternal : public ::testing::Test {
"hashtable://test -s " + store_socket_name_ +
" 1> /tmp/log.stdout 2> /tmp/log.stderr & " +
"echo $! > " + store_socket_name_ + ".pid";
- system(plasma_command.c_str());
+ PLASMA_CHECK_SYSTEM(system(plasma_command.c_str()));
ARROW_CHECK_OK(client_.Connect(store_socket_name_, ""));
}
void TearDown() override {
@@ -73,12 +73,14 @@ class TestPlasmaStoreWithExternal : public ::testing::Test {
#ifdef COVERAGE_BUILD
// Ask plasma_store to exit gracefully and give it time to write out
// coverage files
- std::string plasma_term_command = "kill -TERM `cat " + store_socket_name_
+ ".pid`";
- system(plasma_term_command.c_str());
+ std::string plasma_term_command =
+ "kill -TERM `cat " + store_socket_name_ + ".pid` || exit 0";
+ PLASMA_CHECK_SYSTEM(system(plasma_term_command.c_str()));
std::this_thread::sleep_for(std::chrono::milliseconds(200));
#endif
- std::string plasma_kill_command = "kill -KILL `cat " + store_socket_name_
+ ".pid`";
- system(plasma_kill_command.c_str());
+ std::string plasma_kill_command =
+ "kill -KILL `cat " + store_socket_name_ + ".pid` || exit 0";
+ PLASMA_CHECK_SYSTEM(system(plasma_kill_command.c_str()));
}
protected: