diff options
-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 |