mirror of
https://github.com/neovim/neovim.git
synced 2025-10-10 03:46:31 +00:00
memory: Add free
wrapper and refactor project to use it
We already use wrappers for allocation, the new `xfree` function is the equivalent for deallocation and provides a way to fully replace the malloc implementation used by Neovim.
This commit is contained in:
@@ -58,7 +58,7 @@ String buffer_get_line(Buffer buffer, Integer index, Error *err)
|
||||
rv = slice.items[0].data.string;
|
||||
}
|
||||
|
||||
free(slice.items);
|
||||
xfree(slice.items);
|
||||
|
||||
return rv;
|
||||
}
|
||||
@@ -144,10 +144,10 @@ ArrayOf(String) buffer_get_line_slice(Buffer buffer,
|
||||
end:
|
||||
if (err->set) {
|
||||
for (size_t i = 0; i < rv.size; i++) {
|
||||
free(rv.items[i].data.string.data);
|
||||
xfree(rv.items[i].data.string.data);
|
||||
}
|
||||
|
||||
free(rv.items);
|
||||
xfree(rv.items);
|
||||
rv.items = NULL;
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ void buffer_set_line_slice(Buffer buffer,
|
||||
}
|
||||
|
||||
// Same as with replacing, but we also need to free lines
|
||||
free(lines[i]);
|
||||
xfree(lines[i]);
|
||||
lines[i] = NULL;
|
||||
extra++;
|
||||
}
|
||||
@@ -301,10 +301,10 @@ void buffer_set_line_slice(Buffer buffer,
|
||||
|
||||
end:
|
||||
for (size_t i = 0; i < new_len; i++) {
|
||||
free(lines[i]);
|
||||
xfree(lines[i]);
|
||||
}
|
||||
|
||||
free(lines);
|
||||
xfree(lines);
|
||||
restore_win_for_buf(save_curwin, save_curtab, save_curbuf);
|
||||
try_end(err);
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@ bool try_end(Error *err)
|
||||
free_global_msglist();
|
||||
|
||||
if (should_free) {
|
||||
free(msg);
|
||||
xfree(msg);
|
||||
}
|
||||
} else if (did_throw) {
|
||||
api_set_error(err, Exception, "%s", current_exception->value);
|
||||
@@ -489,7 +489,7 @@ void api_free_string(String value)
|
||||
return;
|
||||
}
|
||||
|
||||
free(value.data);
|
||||
xfree(value.data);
|
||||
}
|
||||
|
||||
void api_free_object(Object value)
|
||||
@@ -527,7 +527,7 @@ void api_free_array(Array value)
|
||||
api_free_object(value.items[i]);
|
||||
}
|
||||
|
||||
free(value.items);
|
||||
xfree(value.items);
|
||||
}
|
||||
|
||||
void api_free_dictionary(Dictionary value)
|
||||
@@ -537,7 +537,7 @@ void api_free_dictionary(Dictionary value)
|
||||
api_free_object(value.items[i].value);
|
||||
}
|
||||
|
||||
free(value.items);
|
||||
xfree(value.items);
|
||||
}
|
||||
|
||||
Dictionary api_metadata(void)
|
||||
|
@@ -85,7 +85,7 @@ void vim_feedkeys(String keys, String mode, Boolean escape_csi)
|
||||
insert ? 0 : typebuf.tb_len, !typed, false);
|
||||
|
||||
if (escape_csi) {
|
||||
free(keys_esc);
|
||||
xfree(keys_esc);
|
||||
}
|
||||
|
||||
if (vgetc_busy)
|
||||
|
Reference in New Issue
Block a user