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