Changeset: 42b2d8bfbd82 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/42b2d8bfbd82
Modified Files:
        sql/backends/monet5/sql.c
Branch: returning
Log Message:

cleanup stream


diffs (54 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5553,12 +5553,12 @@ SQLread_dump_rel(Client cntxt, MalBlkPtr
 
        list *refs = sa_list(m->sa);
        if (refs == NULL)
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               goto bailout;
 
        int pos = 0;
        sql_rel* rel = rel_read(m, input, &pos, refs);
        if (!rel)
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(42000) "failed to load 
json");
+               throw(SQL, "SQLread_dump_rel", SQLSTATE(42000) "failed to read 
relational plan");
 
        buffer *b = NULL;
        stream *s = NULL;
@@ -5566,22 +5566,31 @@ SQLread_dump_rel(Client cntxt, MalBlkPtr
 
        b = buffer_create(1024);
        if(b == NULL)
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               goto bailout;
        s = buffer_wastream(b, "exp_dump");
        if(s == NULL)
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               goto bailout;
 
        refs = sa_list(m->sa);
        if (refs == NULL)
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               goto bailout;
 
        rel_print_refs(m, s, rel, 0, refs, 0);
        rel_print_(m, s, rel, 0, refs, 0);
        res = buffer_get_buf(b);
 
        if (!(*r = GDKstrdup(res)))
-               throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               goto bailout;
+
+       mnstr_destroy(s);
        return MAL_SUCCEED;
+
+bailout:
+       if (s)
+               mnstr_destroy(s);
+       else if (b)
+               buffer_destroy(b);
+       throw(SQL, "SQLread_dump_rel", SQLSTATE(HY013) MAL_MALLOC_FAIL);
 }
 
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to