You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/05/25 21:10:33 UTC

[arrow] branch master updated: ARROW-14790: [GLib] Fix a memory leak on creating GArrowDatum (#13228)

This is an automated email from the ASF dual-hosted git repository.

kou 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 b7edf64887 ARROW-14790: [GLib] Fix a memory leak on creating GArrowDatum (#13228)
b7edf64887 is described below

commit b7edf64887769e15b0d24ba31b465882f3a740b7
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Thu May 26 06:10:25 2022 +0900

    ARROW-14790: [GLib] Fix a memory leak on creating GArrowDatum (#13228)
    
    Authored-by: Sutou Kouhei <ko...@clear-code.com>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 c_glib/arrow-glib/datum.cpp | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/c_glib/arrow-glib/datum.cpp b/c_glib/arrow-glib/datum.cpp
index 66993d6c22..02f882a7d6 100644
--- a/c_glib/arrow-glib/datum.cpp
+++ b/c_glib/arrow-glib/datum.cpp
@@ -747,13 +747,17 @@ garrow_datum_new_raw(arrow::Datum *arrow_datum)
     {
       auto arrow_scalar = arrow_datum->scalar();
       auto scalar = garrow_scalar_new_raw(&arrow_scalar);
-      return GARROW_DATUM(garrow_scalar_datum_new_raw(arrow_datum, scalar));
+      auto scalar_datum = garrow_scalar_datum_new_raw(arrow_datum, scalar);
+      g_object_unref(scalar);
+      return GARROW_DATUM(scalar_datum);
     }
   case arrow::Datum::ARRAY:
     {
       auto arrow_array = arrow_datum->make_array();
       auto array = garrow_array_new_raw(&arrow_array);
-      return GARROW_DATUM(garrow_array_datum_new_raw(arrow_datum, array));
+      auto array_datum = garrow_array_datum_new_raw(arrow_datum, array);
+      g_object_unref(array);
+      return GARROW_DATUM(array_datum);
     }
   case arrow::Datum::CHUNKED_ARRAY:
     {
@@ -761,6 +765,7 @@ garrow_datum_new_raw(arrow::Datum *arrow_datum)
       auto chunked_array = garrow_chunked_array_new_raw(&arrow_chunked_array);
       auto chunked_array_datum =
         garrow_chunked_array_datum_new_raw(arrow_datum, chunked_array);
+      g_object_unref(chunked_array);
       return GARROW_DATUM(chunked_array_datum);
     }
   case arrow::Datum::RECORD_BATCH:
@@ -769,13 +774,16 @@ garrow_datum_new_raw(arrow::Datum *arrow_datum)
       auto record_batch = garrow_record_batch_new_raw(&arrow_record_batch);
       auto record_batch_datum =
         garrow_record_batch_datum_new_raw(arrow_datum, record_batch);
+      g_object_unref(record_batch);
       return GARROW_DATUM(record_batch_datum);
     }
   case arrow::Datum::TABLE:
     {
       auto arrow_table = arrow_datum->table();
       auto table = garrow_table_new_raw(&arrow_table);
-      return GARROW_DATUM(garrow_table_datum_new_raw(arrow_datum, table));
+      auto table_datum = garrow_table_datum_new_raw(arrow_datum, table);
+      g_object_unref(table);
+      return GARROW_DATUM(table_datum);
     }
   default:
     // TODO