Changeset: 5d787ca83a77 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d787ca83a77
Modified Files:
        gdk/gdk_aggr.c
Branch: Jul2017
Log Message:

Use an extra variable for convenience.


diffs (94 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -1355,7 +1355,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
        BUN *restrict rems = NULL;
        lng *restrict cnts = NULL;
        dbl *restrict dbls;
-       BAT *bn = NULL;
+       BAT *bn = NULL, *cn = NULL;
        BUN start, end;
        const oid *cand = NULL, *candend = NULL;
        const char *err;
@@ -1384,11 +1384,12 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                }
                if (cntsp) {
                        lng zero = 0;
-                       if ((*cntsp = BATconstant(ngrp == 0 ? 0 : min, 
TYPE_lng, &zero, ngrp, TRANSIENT)) == NULL) {
+                       if ((cn = BATconstant(ngrp == 0 ? 0 : min, TYPE_lng, 
&zero, ngrp, TRANSIENT)) == NULL) {
                                GDKerror("BATgroupavg: failed to create BAT\n");
                                BBPreclaim(bn);
                                return GDK_FAIL;
                        }
+                       *cntsp = cn;
                }
                *bnp = bn;
                return GDK_SUCCEED;
@@ -1404,10 +1405,11 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                        return GDK_FAIL;
                if (cntsp) {
                        lng one = 1;
-                       if ((*cntsp = BATconstant(ngrp == 0 ? 0 : min, 
TYPE_lng, &one, ngrp, TRANSIENT)) == NULL) {
+                       if ((cn = BATconstant(ngrp == 0 ? 0 : min, TYPE_lng, 
&one, ngrp, TRANSIENT)) == NULL) {
                                BBPreclaim(bn);
                                return GDK_FAIL;
                        }
+                       *cntsp = cn;
                }
                *bnp = bn;
                return GDK_SUCCEED;
@@ -1430,9 +1432,9 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                break;
        }
        if (cntsp) {
-               if ((*cntsp = COLnew(min, TYPE_lng, ngrp, TRANSIENT)) == NULL)
+               if ((cn = COLnew(min, TYPE_lng, ngrp, TRANSIENT)) == NULL)
                        goto alloc_fail;
-               cnts = (lng *) Tloc(*cntsp, 0);
+               cnts = (lng *) Tloc(cn, 0);
                memset(cnts, 0, ngrp * sizeof(lng));
        } else {
                cnts = GDKzalloc(ngrp * sizeof(lng));
@@ -1476,8 +1478,8 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                break;
        default:
                GDKfree(rems);
-               if (cntsp)
-                       BBPreclaim(*cntsp);
+               if (cn)
+                       BBPreclaim(cn);
                else
                        GDKfree(cnts);
                BBPunfix(bn->batCacheid);
@@ -1486,15 +1488,16 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
                return GDK_FAIL;
        }
        GDKfree(rems);
-       if (cntsp == NULL)
+       if (cn == NULL)
                GDKfree(cnts);
        else {
-               BATsetcount(*cntsp, ngrp);
-               (*cntsp)->tkey = BATcount(*cntsp) <= 1;
-               (*cntsp)->tsorted = BATcount(*cntsp) <= 1;
-               (*cntsp)->trevsorted = BATcount(*cntsp) <= 1;
-               (*cntsp)->tnil = 0;
-               (*cntsp)->tnonil = 1;
+               BATsetcount(cn, ngrp);
+               cn->tkey = BATcount(cn) <= 1;
+               cn->tsorted = BATcount(cn) <= 1;
+               cn->trevsorted = BATcount(cn) <= 1;
+               cn->tnil = 0;
+               cn->tnonil = 1;
+               *cntsp = cn;
        }
        BATsetcount(bn, ngrp);
        bn->tkey = BATcount(bn) <= 1;
@@ -1511,6 +1514,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT 
        GDKfree(rems);
        if (cntsp) {
                BBPreclaim(*cntsp);
+               *cntsp = NULL;
        } else if (cnts) {
                GDKfree(cnts);
        }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to