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 4f7b868f fix: Enure ArrowIpcSetDecompressor() marks input decompressor
as released (#748)
4f7b868f is described below
commit 4f7b868f45c5dee77984571dad5a0a0ca852e266
Author: Dewey Dunnington <[email protected]>
AuthorDate: Sat May 3 14:27:15 2025 -0500
fix: Enure ArrowIpcSetDecompressor() marks input decompressor as released
(#748)
Closes #706
---
src/nanoarrow/ipc/decoder.c | 1 +
src/nanoarrow/ipc/decoder_test.cc | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/src/nanoarrow/ipc/decoder.c b/src/nanoarrow/ipc/decoder.c
index 97649351..202715e8 100644
--- a/src/nanoarrow/ipc/decoder.c
+++ b/src/nanoarrow/ipc/decoder.c
@@ -262,6 +262,7 @@ ArrowErrorCode ArrowIpcDecoderSetDecompressor(struct
ArrowIpcDecoder* decoder,
}
memcpy(&private_data->decompressor, decompressor, sizeof(struct
ArrowIpcDecompressor));
+ decompressor->release = NULL;
return NANOARROW_OK;
}
diff --git a/src/nanoarrow/ipc/decoder_test.cc
b/src/nanoarrow/ipc/decoder_test.cc
index eb084f0b..04d8846c 100644
--- a/src/nanoarrow/ipc/decoder_test.cc
+++ b/src/nanoarrow/ipc/decoder_test.cc
@@ -558,6 +558,20 @@ TEST(NanoarrowIpcTest, NanoarrowIpcSetSchemaErrors) {
ArrowIpcDecoderReset(&decoder);
}
+TEST(NanoarrowIpcTest, NanoarrowIpcSetDecompressor) {
+ struct ArrowIpcDecoder decoder;
+ ASSERT_EQ(ArrowIpcDecoderInit(&decoder), NANOARROW_OK);
+
+ struct ArrowIpcDecompressor decompressor;
+ ASSERT_EQ(ArrowIpcSerialDecompressor(&decompressor), NANOARROW_OK);
+ EXPECT_NE(decompressor.release, nullptr);
+
+ ASSERT_EQ(ArrowIpcDecoderSetDecompressor(&decoder, &decompressor),
NANOARROW_OK);
+ ASSERT_EQ(decompressor.release, nullptr);
+
+ ArrowIpcDecoderReset(&decoder);
+}
+
#if defined(NANOARROW_BUILD_TESTS_WITH_ARROW)
class ArrowTypeParameterizedTestFixture
: public ::testing::TestWithParam<std::shared_ptr<arrow::DataType>> {