This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 30d01a9 fix: clear `release` in `EmptyArrayStream::release_wrapper`
(#204)
30d01a9 is described below
commit 30d01a98b190bd6931d5ed32967b7bbc0b03b55c
Author: David Li <[email protected]>
AuthorDate: Thu May 25 12:01:55 2023 -0400
fix: clear `release` in `EmptyArrayStream::release_wrapper` (#204)
Fixes #203.
---
src/nanoarrow/nanoarrow.hpp | 2 ++
src/nanoarrow/nanoarrow_hpp_test.cc | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/src/nanoarrow/nanoarrow.hpp b/src/nanoarrow/nanoarrow.hpp
index 8dcd16c..da54a57 100644
--- a/src/nanoarrow/nanoarrow.hpp
+++ b/src/nanoarrow/nanoarrow.hpp
@@ -301,6 +301,8 @@ class EmptyArrayStream {
static void release_wrapper(struct ArrowArrayStream* stream) {
delete reinterpret_cast<EmptyArrayStream*>(stream->private_data);
+ stream->release = nullptr;
+ stream->private_data = nullptr;
}
};
diff --git a/src/nanoarrow/nanoarrow_hpp_test.cc
b/src/nanoarrow/nanoarrow_hpp_test.cc
index 4b1d661..5eef4d5 100644
--- a/src/nanoarrow/nanoarrow_hpp_test.cc
+++ b/src/nanoarrow/nanoarrow_hpp_test.cc
@@ -106,6 +106,14 @@ TEST(NanoarrowHppTest, NanoarrowHppUniqueArrayStreamTest) {
EXPECT_NE(array_stream3->release, nullptr);
EXPECT_EQ(array_stream3->get_schema(array_stream2.get(), schema.get()),
NANOARROW_OK);
EXPECT_STREQ(schema->format, "i");
+
+ // releasing should clear the release callback
+ EXPECT_EQ(ArrowSchemaInitFromType(schema_in.get(), NANOARROW_TYPE_INT32),
NANOARROW_OK);
+ auto array_stream4 =
nanoarrow::EmptyArrayStream::MakeUnique(schema_in.get());
+ EXPECT_NE(array_stream4->release, nullptr);
+ array_stream4->release(array_stream4.get());
+ EXPECT_EQ(array_stream4->private_data, nullptr);
+ EXPECT_EQ(array_stream4->release, nullptr);
}
TEST(NanoarrowHppTest, NanoarrowHppUniqueBufferTest) {