Changeset: 5ac970b567e4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ac970b567e4 Modified Files: sql/server/rel_dump.c sql/server/rel_prop.c sql/server/rel_psm.c sql/storage/bat/bat_logger.c Branch: Jun2016 Log Message:
Fix a bunch of leaks. diffs (155 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -212,9 +212,13 @@ exp_print(mvc *sql, stream *fout, sql_ex mnstr_printf(fout, " NOT NULL"); if (e->p) { prop *p = e->p; + char *pv; - for (; p; p = p->p) - mnstr_printf(fout, " %s %s", propkind2string(p), propvalue2string(p)); + for (; p; p = p->p) { + pv = propvalue2string(p); + mnstr_printf(fout, " %s %s", propkind2string(p), pv); + GDKfree(pv); + } } if (e->name && alias) { mnstr_printf(fout, " as "); @@ -502,9 +506,13 @@ rel_print_(mvc *sql, stream *fout, sql_ } if (rel->p) { prop *p = rel->p; + char *pv; - for (; p; p = p->p) - mnstr_printf(fout, " %s %s", propkind2string(p), propvalue2string(p)); + for (; p; p = p->p) { + pv = propvalue2string(p); + mnstr_printf(fout, " %s %s", propkind2string(p), pv); + GDKfree(pv); + } } } diff --git a/sql/server/rel_prop.c b/sql/server/rel_prop.c --- a/sql/server/rel_prop.c +++ b/sql/server/rel_prop.c @@ -99,5 +99,5 @@ propvalue2string( prop *p) break; } } - return ""; + return _STRDUP(""); } diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -725,8 +725,10 @@ rel_create_func(mvc *sql, dlist *qname, char *tpe = subtype2string((sql_subtype *) n->data); if (arg_list) { + char *t = arg_list; arg_list = sql_message("%s, %s", arg_list, tpe); - _DELETE(tpe); + _DELETE(t); + _DELETE(tpe); } else { arg_list = tpe; } @@ -911,19 +913,24 @@ resolve_func( mvc *sql, sql_schema *s, c node *n; if (type_list->cnt > 0) { + void *e; for (n = type_list->h; n; n = n->next) { char *tpe = subtype2string((sql_subtype *) n->data); if (arg_list) { + char *t = arg_list; arg_list = sql_message("%s, %s", arg_list, tpe); - _DELETE(tpe); + _DELETE(tpe); + _DELETE(t); } else { arg_list = tpe; } } list_destroy(list_func); list_destroy(type_list); - return sql_error(sql, 02, "%s %s%s: no such %s%s '%s' (%s)", op, KF, F, kf, f, name, arg_list); + e = sql_error(sql, 02, "%s %s%s: no such %s%s '%s' (%s)", op, KF, F, kf, f, name, arg_list); + _DELETE(arg_list); + return e; } list_destroy(list_func); list_destroy(type_list); diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c --- a/sql/storage/bat/bat_logger.c +++ b/sql/storage/bat/bat_logger.c @@ -211,37 +211,39 @@ bl_postversion( void *lg) b = BATdescriptor((bat) logger_find_bat(lg, N(n, NULL, s, "types_systemname"))); bi = bat_iterator(b); for (p=BUNfirst(b), q=BUNlast(b); p<q; p++) { - char *t = (char*)BUNtail(bi, p); - if (strcmp(toLower(t), "wkb") == 0){ - geomUpgrade++; + char *t = toLower(BUNtail(bi, p)); + geomUpgrade = strcmp(t, "wkb") == 0; + GDKfree(t); + if (geomUpgrade) break; - } } bat_destroy(b); - /* test whether the catalog contains information about - * geometry columns */ - b = BATdescriptor((bat) logger_find_bat(lg, N(n, NULL, s, "_columns_type"))); - bi = bat_iterator(b); - for (p=BUNfirst(b), q=BUNlast(b); p<q; p++) { - char *t = (char*)BUNtail(bi, p); - if (strcmp(toLower(t), "point") == 0 || - strcmp(toLower(t), "curve") == 0 || - strcmp(toLower(t), "linestring") == 0 || - strcmp(toLower(t), "surface") == 0 || - strcmp(toLower(t), "polygon") == 0 || - strcmp(toLower(t), "multipoint") == 0 || - strcmp(toLower(t), "multicurve") == 0 || - strcmp(toLower(t), "multilinestring") == 0 || - strcmp(toLower(t), "multisurface") == 0 || - strcmp(toLower(t), "multipolygon") == 0 || - strcmp(toLower(t), "geometry") == 0 || - strcmp(toLower(t), "geometrycollection") == 0){ - geomUpgrade++; - break; + if (!geomUpgrade) { + /* test whether the catalog contains + * information about geometry columns */ + b = BATdescriptor((bat) logger_find_bat(lg, N(n, NULL, s, "_columns_type"))); + bi = bat_iterator(b); + for (p=BUNfirst(b), q=BUNlast(b); p<q; p++) { + char *t = toLower(BUNtail(bi, p)); + geomUpgrade = strcmp(t, "point") == 0 || + strcmp(t, "curve") == 0 || + strcmp(t, "linestring") == 0 || + strcmp(t, "surface") == 0 || + strcmp(t, "polygon") == 0 || + strcmp(t, "multipoint") == 0 || + strcmp(t, "multicurve") == 0 || + strcmp(t, "multilinestring") == 0 || + strcmp(t, "multisurface") == 0 || + strcmp(t, "multipolygon") == 0 || + strcmp(t, "geometry") == 0 || + strcmp(t, "geometrycollection") == 0; + GDKfree(t); + if (geomUpgrade) + break; } + bat_destroy(b); } - bat_destroy(b); if (!geomUpgrade && geomcatalogfix_get() == NULL) { /* The catalog knew nothing about geometries _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list