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>> {

Reply via email to