diff options
-rw-r--r-- | src/uv_link_t.c | 10 | ||||
-rw-r--r-- | test/src/test-close.c | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/uv_link_t.c b/src/uv_link_t.c index 32fa6c9..64ca70d 100644 --- a/src/uv_link_t.c +++ b/src/uv_link_t.c @@ -50,6 +50,8 @@ int uv_link_propagate_write(uv_link_t* link, uv_link_t* source, const uv_buf_t bufs[], unsigned int nbufs, uv_stream_t* send_handle, uv_link_write_cb cb, void* arg) { + if (link == NULL) + return UV_EFAULT; CLOSE_WRAP(link->methods->write(link, source, bufs, nbufs, send_handle, cb, arg)); } @@ -59,16 +61,22 @@ int uv_link_propagate_shutdown(uv_link_t* link, uv_link_t* source, uv_link_shutdown_cb cb, void* arg) { + if (link == NULL) + return UV_EFAULT; CLOSE_WRAP(link->methods->shutdown(link, source, cb, arg)); } int uv_link_read_start(uv_link_t* link) { + if (link == NULL) + return UV_EFAULT; CLOSE_WRAP(link->methods->read_start(link)); } int uv_link_read_stop(uv_link_t* link) { + if (link == NULL) + return UV_EFAULT; CLOSE_WRAP(link->methods->read_stop(link)); } @@ -76,6 +84,8 @@ int uv_link_read_stop(uv_link_t* link) { int uv_link_try_write(uv_link_t* link, const uv_buf_t bufs[], unsigned int nbufs) { + if (link == NULL) + return UV_EFAULT; CLOSE_WRAP(link->methods->try_write(link, bufs, nbufs)); } diff --git a/test/src/test-close.c b/test/src/test-close.c index bbbaf26..4f10630 100644 --- a/test/src/test-close.c +++ b/test/src/test-close.c @@ -19,10 +19,16 @@ static void c_close_cb(uv_link_t* l) { static void b_read_cb(uv_link_observer_t* o, ssize_t nread, const uv_buf_t* d) { b_reads |= 1 << nread; if (nread == 2) { + uv_buf_t tmp; + CHECK_EQ(a.close_depth, 0, "depth check"); CHECK_EQ(b.close_depth, 2, "depth check"); CHECK_EQ(c.close_depth, 1, "depth check"); uv_link_close((uv_link_t*) &c, c_close_cb); + + CHECK_EQ(o->parent, NULL, "parent should be zeroed"); + CHECK_EQ(uv_link_try_write(o->parent, &tmp, 0), UV_EFAULT, + "write should fail"); } else { CHECK_EQ(a.close_depth, 0, "depth check"); CHECK_EQ(b.close_depth, 1, "depth check"); |