Changeset: 7baa4126fa80 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7baa4126fa80
Modified Files:
        geom/monetdb5/geom_upgrade.c
Branch: geo
Log Message:

added some checks


diffs (206 lines):

diff --git a/geom/monetdb5/geom_upgrade.c b/geom/monetdb5/geom_upgrade.c
--- a/geom/monetdb5/geom_upgrade.c
+++ b/geom/monetdb5/geom_upgrade.c
@@ -40,7 +40,7 @@ list_init(size_t capacity)
        return l;
 }
 
-static char*
+static int
 list_delete(ulist* ul)
 {
        size_t i;
@@ -48,38 +48,38 @@ list_delete(ulist* ul)
                GDKfree(ul->elements[i].n);
        GDKfree(ul->elements);
        GDKfree(ul);
-       return true;
+       return 1;
 }
 
-static char*
+static int
 list_extend(ulist **ul)
 {
        ulist* nl;
        if ((nl = list_init((*ul)->capacity*2)) == NULL )
-               return NULL;
+               return 0;
        memcpy(nl->elements, (*ul)->elements, 
sizeof(list_element)*(*ul)->count);
        nl->count = (*ul)->count;
        GDKfree((*ul)->elements);
        GDKfree(*ul);
        *ul = nl;
-       return true;
+       return 1;
 }
 
-static char*
+static int
 list_add(ulist **ul, BAT *ob, BAT *nb, char *n) 
 {
        char *nn;
        if ((nn =  GDKmalloc(sizeof(char)*strlen(n))) == NULL)
-               return NULL;
+               return 0;
        strcpy(nn, n);
        if ((*ul)->count == (*ul)->capacity)
                if (!list_extend(ul))
-                       return NULL;
+                       return 0;
        (*ul)->elements[(*ul)->count].ob = ob;
        (*ul)->elements[(*ul)->count].nb = nb;
        (*ul)->elements[(*ul)->count].n = nn;
        (*ul)->count++;
-       return true;
+       return 1;
 }
 
 static char *
@@ -129,7 +129,9 @@ geom_catalog_upgrade(void *lg, int EC_GE
        int val, maxid, i;
        size_t ii;
        bit bval;
-       ulist *ul = list_init(32);
+       ulist *ul;
+       if ((ul = list_init(32)) == NULL)
+               return 0;
 
        /* Update the catalog to use the new geometry types */
        ct = BATdescriptor((bat) logger_find_bat(lg, N(n, NULL, s, 
"_columns_type")));
@@ -163,7 +165,7 @@ geom_catalog_upgrade(void *lg, int EC_GE
        BATseqbase(cns, cs->hseqbase);
 
        for(p=BUNfirst(ct), q=BUNlast(ct); p<q; p++) {
-               bool isGeom = false;
+               bte isGeom = 0;
                char *type = BUNtail(cti, p);
                int digits = *(int*)BUNtail(cdi, p);
                int scale = *(int*)BUNtail(csi, p);
@@ -171,72 +173,72 @@ geom_catalog_upgrade(void *lg, int EC_GE
                
                if (strcmp(toLower(type), "point") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbPoint;
                        scale = 0; // in the past we did not save the srid
                } else if (strcmp(toLower(type), "linestring") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbLineString;
                        scale = 0;
                } else if (strcmp(toLower(type), "curve") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbLineString;
                        scale = 0;
                } else if (strcmp(toLower(type), "linearring") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbLinearRing;
                        scale = 0;
                } else if (strcmp(toLower(type), "polygon") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbPolygon;
                        scale = 0;
                } else if (strcmp(toLower(type), "surface") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbPolygon;
                        scale = 0;
                } else if (strcmp(toLower(type), "multipoint") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbMultiPoint;
                        scale = 0;
                } else if (strcmp(toLower(type), "multilinestring") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbMultiLineString;
                        scale = 0;
                } else if (strcmp(toLower(type), "multicurve") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbMultiLineString;
                        scale = 0;
                } else if (strcmp(toLower(type), "multipolygon") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbMultiPolygon;
                        scale = 0;
                } else if (strcmp(toLower(type), "multisurface") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbMultiPolygon;
                        scale = 0;
                } else if (strcmp(toLower(type), "geomcollection") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbGeometryCollection;
                        scale = 0;
                } else if (strcmp(toLower(type), "geometrycollection") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = wkbGeometryCollection;
                        scale = 0;
                }  else if (strcmp(toLower(type), "geometry") == 0) {
                        type = "geometry";
-                       isGeom = true;
+                       isGeom = 1;
                        digits = 0;
                        scale = 0;
                } 
@@ -282,13 +284,15 @@ geom_catalog_upgrade(void *lg, int EC_GE
                                wn->srid = 0;// we did not save the srid in the 
past
                                BUNappend(gn, wn, TRUE);
                        }
-                       list_add(&ul, g, gn, N(n, sn, tblname, colname));
+                       if (list_add(&ul, g, gn, N(n, sn, tblname, colname)) == 
0)
+                               return 0;
                }
        }
 
-       list_add(&ul, ct, cnt, N(n, NULL, s, "_columns_type"));
-       list_add(&ul, cd, cnd, N(n, NULL, s, "_columns_type_digits"));
-       list_add(&ul, cs, cns, N(n, NULL, s, "_columns_type_scale"));
+       if (!list_add(&ul, ct, cnt, N(n, NULL, s, "_columns_type")) ||
+           !list_add(&ul, cd, cnd, N(n, NULL, s, "_columns_type_digits")) ||
+           !list_add(&ul, cs, cns, N(n, NULL, s, "_columns_type_scale")))
+               return 0;
 
        if (cn) BBPunfix(cn->batCacheid);
        if (ctid) BBPunfix(ctid->batCacheid);
@@ -344,7 +348,8 @@ geom_catalog_upgrade(void *lg, int EC_GE
        val = 0; BUNappend(ttn[7], &val, TRUE); // the new types use schema_id=0
 
        for (i = 0; i < 8; i++) 
-               list_add(&ul, tt[i], ttn[i], N(n, NULL, s, nt[i]));
+               if (!list_add(&ul, tt[i], ttn[i], N(n, NULL, s, nt[i])))
+                       return 0;
 
        /* Add the new functions */
        for (i = 0; i < 10; i++) {
@@ -408,7 +413,8 @@ do {                                                        
\
        GEOM_UPGRADE_STORE_FUNC(ffn, ++maxid, "right_shift", "geom", 
"mbrRight");
 #undef GEOM_UPGRADE_STORE_FUNC
        for (i = 0; i < 10; i++) 
-               list_add(&ul, ff[i], ffn[i], N(n, NULL, s, nf[i]));
+               if (!list_add(&ul, ff[i], ffn[i], N(n, NULL, s, nf[i])))
+                       return 0;
        
        for (ii = 0; ii < ul->count; ii++) {
                BATsetaccess(ul->elements[ii].nb, BAT_READ);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to