diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-20 10:52:49 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-24 13:02:23 -0300 |
commit | c722e22ee660f72d6442475a87d77d61c13a9a42 (patch) | |
tree | 279a2525147564d243fc57efb51ff2b7dbb86753 | |
parent | 30fc6a4fd1b7b317e0f427fbbf981474524f55af (diff) | |
download | rneovim-c722e22ee660f72d6442475a87d77d61c13a9a42.tar.gz rneovim-c722e22ee660f72d6442475a87d77d61c13a9a42.tar.bz2 rneovim-c722e22ee660f72d6442475a87d77d61c13a9a42.zip |
wstream: Make wstream_write consider the return value from uv_write
-rw-r--r-- | src/nvim/os/wstream.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/nvim/os/wstream.c b/src/nvim/os/wstream.c index 5c10401958..13b8e8d9dc 100644 --- a/src/nvim/os/wstream.c +++ b/src/nvim/os/wstream.c @@ -100,8 +100,7 @@ bool wstream_write(WStream *wstream, WBuffer *buffer) buffer->refcount++; if (wstream->curmem > wstream->maxmem) { - release_wbuffer(buffer); - return false; + goto err; } wstream->curmem += buffer->size; @@ -113,9 +112,16 @@ bool wstream_write(WStream *wstream, WBuffer *buffer) uvbuf.base = buffer->data; uvbuf.len = buffer->size; wstream->pending_reqs++; - uv_write(req, wstream->stream, &uvbuf, 1, write_cb); + + if (uv_write(req, wstream->stream, &uvbuf, 1, write_cb)) { + goto err; + } return true; + +err: + release_wbuffer(buffer); + return false; } /// Creates a WBuffer object for holding output data. Instances of this |