Commit c19f2b71 authored by Dr. David Alan Gilbert's avatar Dr. David Alan Gilbert Committed by Thomas Huth
Browse files

test qgraph.c: Fix segs due to out of scope default



The test uses the trick:
   if (!opts) {
     opts = &(QOSGraph...Options) { };
   }

  in a couple of places, however the temporary created
by the &() {}  goes out of scope at the bottom of the if,
and results in a seg or assert when opts-> fields are
used (on fedora 30's gcc 9).

Fixes: fc281c80
Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <20190405184037.16799-1-dgilbert@redhat.com>
Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
parent c098aac7
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ static void add_edge(const char *source, const char *dest,
{
    char *key;
    QOSGraphEdgeList *list = g_hash_table_lookup(edge_table, source);
    QOSGraphEdgeOptions def_opts = { };

    if (!list) {
        list = g_new0(QOSGraphEdgeList, 1);
@@ -85,7 +86,7 @@ static void add_edge(const char *source, const char *dest,
    }

    if (!opts) {
        opts = &(QOSGraphEdgeOptions) { };
        opts = &def_opts;
    }

    QOSGraphEdge *edge = g_new0(QOSGraphEdge, 1);
@@ -590,9 +591,10 @@ void qos_add_test(const char *name, const char *interface,
{
    QOSGraphNode *node;
    char *test_name = g_strdup_printf("%s-tests/%s", interface, name);;
    QOSGraphTestOptions def_opts = { };

    if (!opts) {
        opts = &(QOSGraphTestOptions) { };
        opts = &def_opts;
    }
    node = create_node(test_name, QNODE_TEST);
    node->u.test.function = test_func;