refactor(api): use arena when listing objects

This commit is contained in:
bfredl
2024-02-19 10:44:57 +01:00
parent abb8dcd889
commit d14eefaee9
2 changed files with 20 additions and 23 deletions

View File

@@ -19,7 +19,7 @@
/// @param tabpage Tabpage handle, or 0 for current tabpage
/// @param[out] err Error details, if any
/// @return List of windows in `tabpage`
ArrayOf(Window) nvim_tabpage_list_wins(Tabpage tabpage, Error *err)
ArrayOf(Window) nvim_tabpage_list_wins(Tabpage tabpage, Arena *arena, Error *err)
FUNC_API_SINCE(1)
{
Array rv = ARRAY_DICT_INIT;
@@ -29,15 +29,15 @@ ArrayOf(Window) nvim_tabpage_list_wins(Tabpage tabpage, Error *err)
return rv;
}
size_t n = 0;
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
rv.size++;
n++;
}
rv.items = xmalloc(sizeof(Object) * rv.size);
size_t i = 0;
rv = arena_array(arena, n);
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
rv.items[i++] = WINDOW_OBJ(wp->handle);
ADD_C(rv, WINDOW_OBJ(wp->handle));
}
return rv;