]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - write_common.c
wng: fix two critical bugs
[paraslash.git] / write_common.c
index cfdabe4821bc6af60a12b99f3c9c5ff0b03d60d5..39f124f832dddb169ace064443629bead6be0f7e 100644 (file)
@@ -58,15 +58,15 @@ int wng_open(struct writer_node_group *g)
 {
        int i, ret = 1;
 
-       PARA_NOTICE_LOG("opening wng with %d writer(s)\n", g->num_writers);
+       PARA_NOTICE_LOG("opening wng %p with %d writer(s)\n", g, g->num_writers);
        FOR_EACH_WRITER_NODE(i, g) {
                struct writer_node *wn = &g->writer_nodes[i];
+               wn->wng = g;
                ret = wn->writer->open(wn);
                if (ret < 0)
                        goto out;
                wn->chunk_bytes = ret;
                g->max_chunk_bytes = PARA_MAX(g->max_chunk_bytes, ret);
-               wn->wng = g;
                PARA_DEBUG_LOG("pre_select: %p\n", &wn->writer->pre_select);
                PARA_DEBUG_LOG("post_select: %p\n", &wn->writer->post_select);
                wn->task.pre_select = wn->writer->pre_select;
@@ -94,6 +94,8 @@ void wng_close(struct writer_node_group *g)
 {
        int i;
 
+       if (!g)
+               return;
        PARA_NOTICE_LOG("closing wng with %d writer(s)\n", g->num_writers);
        FOR_EACH_WRITER_NODE(i, g) {
                struct writer_node *wn = &g->writer_nodes[i];