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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list