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

Fixed all(?) size_t that were wrongly written as int by old code.
Hopefully nothing will break again.


diffs (172 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -772,7 +772,8 @@ str wkbFromWKB(wkb **w, wkb **src) {
 /*int* tpe is needed to verify that the type of the FromText function used is 
the
  * same with the type of the geometry created from the wkt representation */
 str wkbFromText(wkb **geomWKB, str *geomWKT, int* srid, int *tpe) {
-       int len=0, te = *tpe;
+       size_t len=0; 
+       int te = *tpe;
        char *errbuf;
        str ex;
 
@@ -803,7 +804,7 @@ str wkbFromText(wkb **geomWKB, str *geom
 
 /*create textual representation of the wkb */
 str wkbAsText(char **txt, wkb **geomWKB, int* withSRID) {
-       int len =0;
+       size_t len =0;
        char* wkt;
 
        if(wkbTOSTR(&wkt, &len, *geomWKB)) {
@@ -959,7 +960,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
        //print areas
        for(i=0; i<itemsNum; i++) {
                char* toStr = NULL;
-               int len = 0;
+               size_t len = 0;
                wkbTOSTR(&toStr, &len, linestringsWKB[i]);
                fprintf(stderr, "%f %s\n", linestringsArea[i], toStr);
                GDKfree(toStr);
@@ -2848,7 +2849,7 @@ str wkbCoordinateFromWKB(dbl* coordinate
 /*str
 mbrFromString(mbr **w, str *src)
 {
-       int len = *w ? (int) sizeof(mbr) : 0;
+       size_t len = *w ? sizeof(mbr) : 0;
        char *errbuf;
        str ex;
 
@@ -2905,9 +2906,9 @@ ordinatesMBR(mbr **res, flt *minX, flt *
 
 /* Creates the string representation (WKT) of a WKB */
 /* return length of resulting string. */
-int wkbTOSTR(char **geomWKT, int* len, wkb *geomWKB) {
+size_t wkbTOSTR(char **geomWKT, size_t* len, wkb *geomWKB) {
        char *wkt = NULL;
-       int dstStrLen = 5;                      /* "nil" */
+       size_t dstStrLen = 5;                   /* "nil" */
 
        /* from WKB to GEOSGeometry */
        GEOSGeom geosGeometry = wkb2geos(geomWKB);
@@ -2921,7 +2922,7 @@ int wkbTOSTR(char **geomWKT, int* len, w
                wkt = GEOSWKTWriter_write(WKT_wr, geosGeometry);
                l = strlen(wkt);
                assert(l < GDK_int_max);
-               dstStrLen = (int) l + 2;        /* add quotes */
+               dstStrLen = l + 2;      /* add quotes */
                GEOSWKTWriter_destroy(WKT_wr);
                GEOSGeom_destroy(geosGeometry);
        }
@@ -2937,12 +2938,13 @@ int wkbTOSTR(char **geomWKT, int* len, w
                strcpy(*geomWKT, "nil");
        }
 
-       return (int) dstStrLen;
+       assert(dstStrLen <= GDK_int_max);
+       return dstStrLen;
 }
 
 /* Creates WKB representation (including srid) from WKT representation */
 /* return number of parsed characters. */
-size_t wkbFROMSTR(char* geomWKT, int* len, wkb **geomWKB, int srid) {
+size_t wkbFROMSTR(char* geomWKT, size_t* len, wkb **geomWKB, int srid) {
        GEOSGeom geosGeometry = NULL;   /* The geometry object that is parsed 
from the src string. */
        GEOSWKTReader *WKT_reader;
        char *polyhedralSurface = "POLYHEDRALSURFACE";
@@ -3126,7 +3128,7 @@ void wkbHEAP(Heap *heap, size_t capacity
 
 /* TOSTR: print atom in a string. */
 /* return length of resulting string. */
-int mbrTOSTR(char **dst, int *len, mbr *atom) {
+size_t mbrTOSTR(char **dst, size_t *len, mbr *atom) {
        static char tempWkt[MBR_WKTLEN];
        size_t dstStrLen = 3;
 
@@ -3137,22 +3139,22 @@ int mbrTOSTR(char **dst, int *len, mbr *
                assert(dstStrLen < GDK_int_max);
        }
 
-       if (*len < (int) dstStrLen + 1) {
+       if (*len < dstStrLen + 1) {
                if (*dst)
                        GDKfree(*dst);
-               *dst = GDKmalloc(*len = (int) dstStrLen + 1);
+               *dst = GDKmalloc(*len = dstStrLen + 1);
        }
 
        if (dstStrLen > 3)
                snprintf(*dst, *len, "\"%s\"", tempWkt);
        else
                strcpy(*dst, "nil");
-       return (int) dstStrLen;
+       return dstStrLen;
 }
 
 /* FROMSTR: parse string to mbr. */
 /* return number of parsed characters. */
-size_t mbrFROMSTR(char *src, int *len, mbr **atom) {
+size_t mbrFROMSTR(char *src, size_t *len, mbr **atom) {
        int nil = 0;
        size_t nchars = 0;      /* The number of characters parsed; the return 
value. */
        GEOSGeom geosMbr = NULL; /* The geometry object that is parsed from the 
src string. */
@@ -3285,11 +3287,10 @@ int mbrWRITE(mbr *c, stream *s, size_t c
  * while the rerurned length (correctly!) is of type size_t ?
  * (not only here, but also elsewhere in this file / the geom code)
  */
-size_t wkbaTOSTR(char **toStr, int* len, wkba *fromArray) {
+size_t wkbaTOSTR(char **toStr, size_t *len, wkba *fromArray) {
        int items = fromArray->itemsNum, i;
        int itemsNumDigits = (int)ceil(log10(items));
        size_t dataSize;//, skipBytes=0;
-       size_t szlen;
        char** partialStrs;
        char* nilStr = "nil";
        char* toStrPtr = NULL, 
*itemsNumStr=GDKmalloc((itemsNumDigits+1)*sizeof(char));
@@ -3347,19 +3348,13 @@ fprintf(stderr, "wkbaTOSTR\n");
        GDKfree(partialStrs);
        GDKfree(itemsNumStr);
 
-       /* StM: Open question / ToDo:
-        * why is len of type int,
-        * while the rerurned length (correctly!) is of type size_t ?
-        * (not only here, but also elsewhere in this file / the geom code)
-        */
-       szlen = strlen(*toStr)+1;
-       assert(szlen < (size_t) GDK_int_max);
-       *len = (int) szlen;
+       *len = strlen(*toStr)+1;
+       assert(*len < (size_t) GDK_int_max);
        return (toStrPtr-*toStr);
 }
 
 /* return number of parsed characters. */
-size_t wkbaFROMSTR(char *fromStr, int* len, wkba **toArray, int srid) {
+size_t wkbaFROMSTR(char *fromStr, size_t *len, wkba **toArray, int srid) {
        int items, i;
        size_t skipBytes=0;
 
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -56,13 +56,13 @@ geom_export bat *geom_prelude(void);
 geom_export void geom_epilogue(void);
 
 /* the len argument is needed for correct storage and retrieval */
-geom_export int wkbTOSTR(char **geomWKT, int *len, wkb *geomWKB);
-geom_export int mbrTOSTR(char **dst, int *len, mbr *atom);
-geom_export size_t wkbaTOSTR(char **toStr, int* len, wkba *fromArray);
+geom_export size_t wkbTOSTR(char **geomWKT, size_t *len, wkb *geomWKB);
+geom_export size_t mbrTOSTR(char **dst, size_t *len, mbr *atom);
+geom_export size_t wkbaTOSTR(char **toStr, size_t* len, wkba *fromArray);
 
-geom_export size_t wkbFROMSTR(char* geomWKT, int *len, wkb** geomWKB, int 
srid);
-geom_export size_t mbrFROMSTR(char *src, int *len, mbr **atom);
-geom_export size_t wkbaFROMSTR(char *fromStr, int* len, wkba **toArray, int 
srid);
+geom_export size_t wkbFROMSTR(char* geomWKT, size_t *len, wkb** geomWKB, int 
srid);
+geom_export size_t mbrFROMSTR(char *src, size_t *len, mbr **atom);
+geom_export size_t wkbaFROMSTR(char *fromStr, size_t *len, wkba **toArray, int 
srid);
 
 geom_export wkb *wkbNULL(void);
 geom_export mbr *mbrNULL(void);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to