mirror of
https://github.com/neovim/neovim.git
synced 2025-10-16 14:56:08 +00:00
rstream: remove 'reading' struct member
Not necessary, as discussed in #980. From the libuv mailing list: https://groups.google.com/forum/#!topic/libuv/OD38PeGeVgQ E.g. this could happen (red: on Windows): > > alloc_cb(handle1); > > alloc_cb(handle2); > > read_cb(handle1); > > read_cb(handle2); But this couldn't: > > alloc_cb(handle1); > > alloc_cb(handle1); > > read_cb(handle1); > > read_cb(handle1); Because each stream has a 1-to-1 correspondance with a libuv handle. The code removed was never executed. Closes #980.
This commit is contained in:

committed by
Thiago de Arruda

parent
8bd1fe9523
commit
115b165bfa
@@ -26,7 +26,7 @@ struct rstream {
|
|||||||
uv_file fd;
|
uv_file fd;
|
||||||
rstream_cb cb;
|
rstream_cb cb;
|
||||||
size_t buffer_size, rpos, wpos, fpos;
|
size_t buffer_size, rpos, wpos, fpos;
|
||||||
bool reading, free_handle;
|
bool free_handle;
|
||||||
EventSource source_override;
|
EventSource source_override;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -150,7 +150,6 @@ void rstream_start(RStream *rstream)
|
|||||||
if (rstream->file_type == UV_FILE) {
|
if (rstream->file_type == UV_FILE) {
|
||||||
uv_idle_start(rstream->fread_idle, fread_idle_cb);
|
uv_idle_start(rstream->fread_idle, fread_idle_cb);
|
||||||
} else {
|
} else {
|
||||||
rstream->reading = false;
|
|
||||||
uv_read_start(rstream->stream, alloc_cb, read_cb);
|
uv_read_start(rstream->stream, alloc_cb, read_cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -236,16 +235,8 @@ static void alloc_cb(uv_handle_t *handle, size_t suggested, uv_buf_t *buf)
|
|||||||
{
|
{
|
||||||
RStream *rstream = handle_get_rstream(handle);
|
RStream *rstream = handle_get_rstream(handle);
|
||||||
|
|
||||||
if (rstream->reading) {
|
|
||||||
buf->len = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
buf->len = rstream->buffer_size - rstream->wpos;
|
buf->len = rstream->buffer_size - rstream->wpos;
|
||||||
buf->base = rstream->buffer + rstream->wpos;
|
buf->base = rstream->buffer + rstream->wpos;
|
||||||
|
|
||||||
// Avoid `alloc_cb`, `alloc_cb` sequences on windows
|
|
||||||
rstream->reading = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback invoked by libuv after it copies the data into the buffer provided
|
// Callback invoked by libuv after it copies the data into the buffer provided
|
||||||
@@ -287,7 +278,6 @@ static void read_cb(uv_stream_t *stream, ssize_t cnt, const uv_buf_t *buf)
|
|||||||
rstream_event_source(rstream));
|
rstream_event_source(rstream));
|
||||||
}
|
}
|
||||||
|
|
||||||
rstream->reading = false;
|
|
||||||
emit_read_event(rstream, false);
|
emit_read_event(rstream, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user