diff options
Diffstat (limited to 'src/nvim/os/wstream.c')
| -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 | 
