diff --git a/lib/io.c b/lib/io.c index 012a3060a..571ab8e22 100644 --- a/lib/io.c +++ b/lib/io.c @@ -97,13 +97,17 @@ int io_init(struct io *io, struct format_type *fmt, struct node *n, int flags) io->input.buffer = alloc(io->input.buflen); io->output.buffer = alloc(io->output.buflen); - if (n) { - io->input.node = n; - io->output.node = n; + io->input.node = n; + io->output.node = n; + if (n) { io->input.signals = &n->signals; io->output.signals = &n->signals; } + else { + io->input.signals = NULL; + io->output.signals = NULL; + } ret = io->_vt->init ? io->_vt->init(io) : 0; if (ret) diff --git a/src/test-cmp.c b/src/test-cmp.c index bd1968e7e..0c5bad66e 100644 --- a/src/test-cmp.c +++ b/src/test-cmp.c @@ -130,6 +130,7 @@ check: if (optarg == endptr) for (int i = 0; i < n; i++) { s[i].format = format; s[i].path = argv[optind + i]; + s[i].io.state = STATE_DESTROYED; s[i].fmt = format_type_lookup(s[i].format); if (!s[i].fmt)