Changeset: f78f2bbb4169 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f78f2bbb4169
Modified Files:
        monetdb5/extras/crackers/crackers_joins.mx
Branch: Aug2011
Log Message:

avoid alloca also in crackers.


diffs (38 lines):

diff --git a/monetdb5/extras/crackers/crackers_joins.mx 
b/monetdb5/extras/crackers/crackers_joins.mx
--- a/monetdb5/extras/crackers/crackers_joins.mx
+++ b/monetdb5/extras/crackers/crackers_joins.mx
@@ -121,13 +121,17 @@ crackers_export str CRKsortBandJoin_@1(i
 
                        _step = _lcount / (_slices -= SAMPLE_TRESHOLD_LOG);
                        _sample = _slices * SAMPLE_SLICE_SIZE;
-                       _cnt = (BUN *) alloca(_slices * sizeof(BUN));
+                       _cnt = GDKmalloc(_slices * sizeof(BUN));
+                       if (_cnt == NULL)
+                               return NULL;
                        for (_lo = 0; _idx < _slices; _lo += _step) {
                                BUN _size = 0, _hi = _lo + SAMPLE_SLICE_SIZE;
 
                                l = BATslice(_tmp1, _lo, _hi);  /* slice keeps 
all parent properties */
-                               if (l == NULL)
+                               if (l == NULL) {
+                                       GDKfree(_cnt);
                                        return NULL;
+                               }
                                _tmp2 = @2;     /* @2 = e.g. BATXjoin(l,r) */
                                if (_tmp2) {
                                        _size = BATcount(_tmp2);
@@ -158,10 +162,13 @@ crackers_export str CRKsortBandJoin_@1(i
                                                }
                                                BBPreclaim(_tmp2);
                                        }
-                                       if (_tmp3 == NULL)
+                                       if (_tmp3 == NULL) {
+                                               GDKfree(_cnt);
                                                return NULL;
+                                       }
                                }
                        }
+                       GDKfree(_cnt);
                        /* overestimate always by 5% */
                        {
                                double _d = (double) (((lng) _tot) * ((lng) 
_lcount)) / (0.95 * (double) _sample);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to