Repository: arrow Updated Branches: refs/heads/master 42b55d98c -> e4845c447
ARROW-551: C++: Construction of Column with nullptr Array segfaults Author: Uwe L. Korn <[email protected]> Closes #335 from xhochy/ARROW-551 and squashes the following commits: 440d4a9 [Uwe L. Korn] ARROW-551: C++: Construction of Column with nullptr Array segfaults Project: http://git-wip-us.apache.org/repos/asf/arrow/repo Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/e4845c44 Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/e4845c44 Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/e4845c44 Branch: refs/heads/master Commit: e4845c447cbef12fa7543f372fbc744fa833fee1 Parents: 42b55d9 Author: Uwe L. Korn <[email protected]> Authored: Sun Feb 12 07:53:40 2017 -0500 Committer: Wes McKinney <[email protected]> Committed: Sun Feb 12 07:53:40 2017 -0500 ---------------------------------------------------------------------- cpp/src/arrow/column-test.cc | 4 ++++ cpp/src/arrow/column.cc | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/arrow/blob/e4845c44/cpp/src/arrow/column-test.cc ---------------------------------------------------------------------- diff --git a/cpp/src/arrow/column-test.cc b/cpp/src/arrow/column-test.cc index 0bbfc83..24d58c8 100644 --- a/cpp/src/arrow/column-test.cc +++ b/cpp/src/arrow/column-test.cc @@ -135,6 +135,10 @@ TEST_F(TestColumn, BasicAPI) { ASSERT_EQ(300, column_->length()); ASSERT_EQ(30, column_->null_count()); ASSERT_EQ(3, column_->data()->num_chunks()); + + // nullptr array should not break + column_.reset(new Column(field, std::shared_ptr<Array>(nullptr))); + ASSERT_NE(column_.get(), nullptr); } TEST_F(TestColumn, ChunksInhomogeneous) { http://git-wip-us.apache.org/repos/asf/arrow/blob/e4845c44/cpp/src/arrow/column.cc ---------------------------------------------------------------------- diff --git a/cpp/src/arrow/column.cc b/cpp/src/arrow/column.cc index 9cc0f57..1376f65 100644 --- a/cpp/src/arrow/column.cc +++ b/cpp/src/arrow/column.cc @@ -90,7 +90,11 @@ Column::Column(const std::shared_ptr<Field>& field, const ArrayVector& chunks) Column::Column(const std::shared_ptr<Field>& field, const std::shared_ptr<Array>& data) : field_(field) { - data_ = std::make_shared<ChunkedArray>(ArrayVector({data})); + if (data) { + data_ = std::make_shared<ChunkedArray>(ArrayVector({data})); + } else { + data_ = std::make_shared<ChunkedArray>(ArrayVector({})); + } } Column::Column(
