mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
api/helpers: implement C string to String helper
Use it in buffers.c
This commit is contained in:
parent
b591447f77
commit
9eb68075d8
@ -108,8 +108,8 @@ StringArray buffer_get_slice(Buffer buffer,
|
||||
goto end;
|
||||
}
|
||||
|
||||
rv.items[i].data = xstrdup((char *)ml_get_buf(buf, (linenr_T)lnum, false));
|
||||
rv.items[i].size = strlen(rv.items[i].data);
|
||||
const char *bufstr = (char *) ml_get_buf(buf, (linenr_T) lnum, false);
|
||||
rv.items[i] = cstr_to_string(bufstr);
|
||||
}
|
||||
|
||||
end:
|
||||
@ -307,9 +307,7 @@ String buffer_get_name(Buffer buffer, Error *err)
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv.data = xstrdup((char *)buf->b_ffname);
|
||||
rv.size = strlen(rv.data);
|
||||
return rv;
|
||||
return cstr_to_string((char *)buf->b_ffname);
|
||||
}
|
||||
|
||||
void buffer_set_name(Buffer buffer, String name, Error *err)
|
||||
|
@ -339,6 +339,18 @@ tabpage_T * find_tab(Tabpage tabpage, Error *err)
|
||||
return rv;
|
||||
}
|
||||
|
||||
String cstr_to_string(const char *str) {
|
||||
if (str == NULL) {
|
||||
return (String) { .data = NULL, .size = 0 };
|
||||
}
|
||||
|
||||
size_t len = strlen(str);
|
||||
return (String) {
|
||||
.data = xmemdup(str, len),
|
||||
.size = len
|
||||
};
|
||||
}
|
||||
|
||||
static bool object_to_vim(Object obj, typval_T *tv, Error *err)
|
||||
{
|
||||
tv->v_type = VAR_UNKNOWN;
|
||||
|
@ -86,5 +86,12 @@ win_T * find_window(Window window, Error *err);
|
||||
/// @return the tabpage pointer
|
||||
tabpage_T * find_tab(Tabpage tabpage, Error *err);
|
||||
|
||||
/// Copies a C string into a String (binary safe string, characters + length)
|
||||
///
|
||||
/// @param str the C string to copy
|
||||
/// @return the resulting String, if the input string was NULL, then an
|
||||
/// empty String is returned
|
||||
String cstr_to_string(const char *str);
|
||||
|
||||
#endif // NVIM_API_HELPERS_H
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user