aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-06-20 10:52:49 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-06-24 13:02:23 -0300
commitc722e22ee660f72d6442475a87d77d61c13a9a42 (patch)
tree279a2525147564d243fc57efb51ff2b7dbb86753
parent30fc6a4fd1b7b317e0f427fbbf981474524f55af (diff)
downloadrneovim-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.c12
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