Changeset: 7412c6606722 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7412c6606722
Modified Files:
        sql/backends/monet5/UDF/capi/capi.c
Branch: jitudf
Log Message:

Fix memory leak in non-grouped aggregate.


diffs (35 lines):

diff --git a/sql/backends/monet5/UDF/capi/capi.c 
b/sql/backends/monet5/UDF/capi/capi.c
--- a/sql/backends/monet5/UDF/capi/capi.c
+++ b/sql/backends/monet5/UDF/capi/capi.c
@@ -246,6 +246,15 @@ static void *wrapped_GDK_malloc_nojump(s
        return add_allocated_region(ptr);
 }
 
+static void *wrapped_GDK_zalloc_nojump(size_t size)
+{
+       void *ptr = GDKzalloc(size + sizeof(allocated_region));
+       if (!ptr) {
+               return NULL;
+       }
+       return add_allocated_region(ptr);
+}
+
 #define GENERATE_BASE_HEADERS(type, tpename)                                   
\
        static int tpename##_is_null(type value);                               
   \
        static void tpename##_initialize(struct cudf_data_struct_##tpename 
*self,  \
@@ -1132,9 +1141,13 @@ static str CUDFeval(Client cntxt, MalBlk
        if (non_grouped_aggregate) {
                GENERATE_BAT_INPUT_BASE(oid);
                bat_data->count = input_size;
+               bat_data->null_value = oid_nil;
                bat_data->data =
-                       GDKzalloc(bat_data->count * 
sizeof(bat_data->null_value));
-               bat_data->null_value = oid_nil;
+                       wrapped_GDK_zalloc_nojump(bat_data->count * 
sizeof(bat_data->null_value));
+               if (!bat_data->data) {
+                               msg = createException(MAL, "cudf.eval", 
MAL_MALLOC_FAIL);
+                               goto wrapup;
+               }
        }
 
        argnode = sqlfun ? sqlfun->res->h : NULL;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to