Enable -Wconversion

This commit is contained in:
KillTheMule 2018-02-11 23:02:53 +01:00
parent 6bdcbef2f5
commit 2106bada5b
8 changed files with 38 additions and 24 deletions

View File

@ -142,7 +142,6 @@ set(CONV_SOURCES
message.c message.c
regexp.c regexp.c
screen.c screen.c
buffer_updates.c
search.c search.c
spell.c spell.c
spellfile.c spellfile.c

View File

@ -85,9 +85,9 @@ String buffer_get_line(Buffer buffer, Integer index, Error *err)
/// @return False when updates couldn't be enabled because the buffer isn't /// @return False when updates couldn't be enabled because the buffer isn't
/// loaded; otherwise True. /// loaded; otherwise True.
Boolean nvim_buf_attach(uint64_t channel_id, Boolean nvim_buf_attach(uint64_t channel_id,
Buffer buffer, Buffer buffer,
Boolean send_buffer, Boolean send_buffer,
Error *err) Error *err)
FUNC_API_SINCE(4) FUNC_API_REMOTE_ONLY FUNC_API_SINCE(4) FUNC_API_REMOTE_ONLY
{ {
buf_T *buf = find_buffer_by_handle(buffer, err); buf_T *buf = find_buffer_by_handle(buffer, err);
@ -106,8 +106,8 @@ Boolean nvim_buf_attach(uint64_t channel_id,
/// @return False when updates couldn't be disabled because the buffer /// @return False when updates couldn't be disabled because the buffer
/// isn't loaded; otherwise True. /// isn't loaded; otherwise True.
Boolean nvim_buf_detach(uint64_t channel_id, Boolean nvim_buf_detach(uint64_t channel_id,
Buffer buffer, Buffer buffer,
Error *err) Error *err)
FUNC_API_SINCE(4) FUNC_API_REMOTE_ONLY FUNC_API_SINCE(4) FUNC_API_REMOTE_ONLY
{ {
buf_T *buf = find_buffer_by_handle(buffer, err); buf_T *buf = find_buffer_by_handle(buffer, err);

View File

@ -2,6 +2,7 @@
#include "nvim/memline.h" #include "nvim/memline.h"
#include "nvim/api/private/helpers.h" #include "nvim/api/private/helpers.h"
#include "nvim/msgpack_rpc/channel.h" #include "nvim/msgpack_rpc/channel.h"
#include "nvim/assert.h"
// Register a channel. Return True if the channel was added, or already added. // Register a channel. Return True if the channel was added, or already added.
// Return False if the channel couldn't be added because the buffer is // Return False if the channel couldn't be added because the buffer is
@ -30,7 +31,10 @@ bool buffer_updates_register(buf_T *buf, uint64_t channel_id, bool send_buffer)
Array linedata = ARRAY_DICT_INIT; Array linedata = ARRAY_DICT_INIT;
if (send_buffer) { if (send_buffer) {
// collect buffer contents // collect buffer contents
size_t line_count = buf->b_ml.ml_line_count; // True now, but a compile time reminder for future systems we support
STATIC_ASSERT(SIZE_MAX >= MAXLNUM, "size_t to small to hold the number of"
" lines in a buffer");
size_t line_count = (size_t)buf->b_ml.ml_line_count;
linedata.size = line_count; linedata.size = line_count;
linedata.items = xcalloc(sizeof(Object), line_count); linedata.items = xcalloc(sizeof(Object), line_count);
for (size_t i = 0; i < line_count; i++) { for (size_t i = 0; i < line_count; i++) {
@ -118,8 +122,11 @@ void buffer_updates_unregister_all(buf_T *buf)
} }
} }
void buffer_updates_send_changes(buf_T *buf, linenr_T firstline, int64_t num_added, void buffer_updates_send_changes(buf_T *buf,
int64_t num_removed, bool send_tick) linenr_T firstline,
int64_t num_added,
int64_t num_removed,
bool send_tick)
{ {
// if one the channels doesn't work, put its ID here so we can remove it later // if one the channels doesn't work, put its ID here so we can remove it later
uint64_t badchannelid = 0; uint64_t badchannelid = 0;
@ -148,8 +155,13 @@ void buffer_updates_send_changes(buf_T *buf, linenr_T firstline, int64_t num_add
// linedata of lines being swapped in // linedata of lines being swapped in
Array linedata = ARRAY_DICT_INIT; Array linedata = ARRAY_DICT_INIT;
if (num_added > 0) { if (num_added > 0) {
linedata.size = num_added; // True now, but a compile time reminder for future systems we support
linedata.items = xcalloc(sizeof(Object), num_added); // Note that `num_added` is a `int64_t`, but still must be lower than
// `MAX_LNUM`
STATIC_ASSERT(SIZE_MAX >= MAXLNUM, "size_t to small to hold the number "
"of lines in a buffer");
linedata.size = (size_t)num_added;
linedata.items = xcalloc(sizeof(Object), (size_t)num_added);
for (int64_t i = 0; i < num_added; i++) { for (int64_t i = 0; i < num_added; i++) {
int64_t lnum = firstline + i; int64_t lnum = firstline + i;
const char *bufstr = (char *)ml_get_buf(buf, (linenr_T)lnum, false); const char *bufstr = (char *)ml_get_buf(buf, (linenr_T)lnum, false);

View File

@ -1,13 +1,16 @@
#ifndef BUFFER_UPDATES_H #ifndef NVIM_BUFFER_UPDATES_H
#define BUFFER_UPDATES_H #define NVIM_BUFFER_UPDATES_H
#include "nvim/buffer_defs.h" #include "nvim/buffer_defs.h"
bool buffer_updates_register(buf_T *buf, uint64_t channel_id, bool send_buffer); bool buffer_updates_register(buf_T *buf, uint64_t channel_id, bool send_buffer);
void buffer_updates_unregister(buf_T *buf, uint64_t channel_id); void buffer_updates_unregister(buf_T *buf, uint64_t channel_id);
void buffer_updates_unregister_all(buf_T *buf); void buffer_updates_unregister_all(buf_T *buf);
void buffer_updates_send_changes(buf_T *buf, linenr_T firstline, int64_t num_added, void buffer_updates_send_changes(buf_T *buf,
int64_t num_removed, bool send_tick); linenr_T firstline,
int64_t num_added,
int64_t num_removed,
bool send_tick);
void buffer_updates_send_tick(buf_T *buf); void buffer_updates_send_tick(buf_T *buf);
#endif // NVIM_BUFFER_UPDATES_H #endif // NVIM_BUFFER_UPDATES_H

View File

@ -4022,7 +4022,7 @@ skip:
int64_t num_added = last_line - first_line; int64_t num_added = last_line - first_line;
int64_t num_removed = num_added - i; int64_t num_removed = num_added - i;
buffer_updates_send_changes(curbuf, first_line, num_added, num_removed, buffer_updates_send_changes(curbuf, first_line, num_added, num_removed,
send_buffer_update_changedtick); send_buffer_update_changedtick);
} }
} }

View File

@ -754,7 +754,7 @@ deleteFold (
// notification that includes every line that was part of the fold // notification that includes every line that was part of the fold
int64_t num_changed = last_lnum - first_lnum; int64_t num_changed = last_lnum - first_lnum;
buffer_updates_send_changes(curbuf, first_lnum, num_changed, buffer_updates_send_changes(curbuf, first_lnum, num_changed,
num_changed, true); num_changed, true);
} }
} }
} }
@ -1607,8 +1607,8 @@ static void foldCreateMarkers(linenr_T start, linenr_T end)
if (kv_size(curbuf->update_channels)) { if (kv_size(curbuf->update_channels)) {
// Note: foldAddMarker() may not actually change start and/or end if // Note: foldAddMarker() may not actually change start and/or end if
// u_save() is unable to save the buffer line, but we send the nvim_buf_update // u_save() is unable to save the buffer line, but we send the
// anyway since it won't do any harm. // nvim_buf_update anyway since it won't do any harm.
int64_t num_changed = 1 + end - start; int64_t num_changed = 1 + end - start;
buffer_updates_send_changes(curbuf, start, num_changed, num_changed, true); buffer_updates_send_changes(curbuf, start, num_changed, num_changed, true);
} }

View File

@ -1921,9 +1921,9 @@ changed_lines(
linenr_T lnume, // line below last changed line linenr_T lnume, // line below last changed line
long xtra, // number of extra lines (negative when deleting) long xtra, // number of extra lines (negative when deleting)
bool send_update // some callers like undo/redo call changed_lines() bool send_update // some callers like undo/redo call changed_lines()
// and then increment b_changedtick *again*. This flag // and then increment b_changedtick *again*. This flag
// allows these callers to send the nvim_buf_update events // allows these callers to send the nvim_buf_update events
// after they're done modifying b_changedtick. // after they're done modifying b_changedtick.
) )
{ {
changed_lines_buf(curbuf, lnum, lnume, xtra); changed_lines_buf(curbuf, lnum, lnume, xtra);

View File

@ -1698,8 +1698,8 @@ bool u_undo_and_forget(int count)
count = 1; count = 1;
} }
undo_undoes = true; undo_undoes = true;
// don't send a nvim_buf_update for this undo is part of 'inccommand' playing with // don't send a nvim_buf_update for this undo is part of 'inccommand' playing
// buffer contents // with buffer contents
u_doit(count, true, false); u_doit(count, true, false);
if (curbuf->b_u_curhead == NULL) { if (curbuf->b_u_curhead == NULL) {