mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 13:15:09 -07:00
coverity/155506: null dereference (#7089)
Coverity warning is a false positive: if rbuffer_read_ptr() returns
NULL then `cnt` is zero.
Revert 76ea97c809
(which caused
the TSan build to hang often--possibly because of the missing ui_flush()).
Instead, modify out_data_append_to_screen() to check for NULL.
ref #6862
This commit is contained in:
parent
707bb37494
commit
5acda12419
@ -447,7 +447,7 @@ static void out_data_append_to_screen(char *output, size_t remaining,
|
||||
size_t off = 0;
|
||||
int last_row = (int)Rows - 1;
|
||||
|
||||
while (off < remaining) {
|
||||
while (output != NULL && off < remaining) {
|
||||
// Found end of line?
|
||||
if (output[off] == NL) {
|
||||
// Can we start a new line or do we need to continue the last one?
|
||||
@ -473,7 +473,7 @@ static void out_data_append_to_screen(char *output, size_t remaining,
|
||||
off++;
|
||||
}
|
||||
|
||||
if (remaining) {
|
||||
if (output != NULL && remaining) {
|
||||
if (last_col == 0) {
|
||||
screen_del_lines(0, 0, 1, (int)Rows, NULL);
|
||||
}
|
||||
@ -496,12 +496,8 @@ static void out_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data,
|
||||
size_t cnt;
|
||||
char *ptr = rbuffer_read_ptr(buf, &cnt);
|
||||
|
||||
if (ptr == NULL || cnt == 0) {
|
||||
// Nothing to read;
|
||||
return;
|
||||
}
|
||||
|
||||
if (out_data_decide_throttle(cnt)) { // Skip output above a threshold.
|
||||
if (ptr != NULL && cnt > 0
|
||||
&& out_data_decide_throttle(cnt)) { // Skip output above a threshold.
|
||||
// Save the skipped output. If it is the final chunk, we display it later.
|
||||
out_data_ring(ptr, cnt);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user