aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-04-23 15:59:59 +0200
committerJustin M. Keyes <justinkz@gmail.com>2017-04-23 23:44:32 +0200
commit2a49163103827465f25810f5f4e3d4305159f209 (patch)
tree673b3f877e9ff51cb27ed1c844495b3f432d5f45 /src
parent5c9860a0a2bf27d409c986673f0a74542561c4c3 (diff)
downloadrneovim-2a49163103827465f25810f5f4e3d4305159f209.tar.gz
rneovim-2a49163103827465f25810f5f4e3d4305159f209.tar.bz2
rneovim-2a49163103827465f25810f5f4e3d4305159f209.zip
api_clear_error()
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/buffer.c2
-rw-r--r--src/nvim/api/private/helpers.c3
-rw-r--r--src/nvim/api/tabpage.c2
-rw-r--r--src/nvim/api/vim.c2
-rw-r--r--src/nvim/api/window.c2
-rw-r--r--src/nvim/eval.c7
-rw-r--r--src/nvim/msgpack_rpc/channel.c60
-rw-r--r--src/nvim/terminal.c9
-rw-r--r--src/nvim/tui/input.c2
9 files changed, 45 insertions, 44 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c
index 2f306ebfc8..81d25d7c95 100644
--- a/src/nvim/api/buffer.c
+++ b/src/nvim/api/buffer.c
@@ -640,7 +640,7 @@ Boolean nvim_buf_is_valid(Buffer buffer)
{
Error stub = ERROR_INIT;
Boolean ret = find_buffer_by_handle(buffer, &stub) != NULL;
- xfree(stub.msg);
+ api_clear_error(&stub);
return ret;
}
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c
index e6632525e1..547ac29bed 100644
--- a/src/nvim/api/private/helpers.c
+++ b/src/nvim/api/private/helpers.c
@@ -800,7 +800,8 @@ void api_free_dictionary(Dictionary value)
xfree(value.items);
}
-void api_free_error(Error *value)
+void api_clear_error(Error *value)
+ FUNC_ATTR_NONNULL_ALL
{
xfree(value->msg);
value->msg = NULL;
diff --git a/src/nvim/api/tabpage.c b/src/nvim/api/tabpage.c
index e6d5f7edad..6f2f9e1d2a 100644
--- a/src/nvim/api/tabpage.c
+++ b/src/nvim/api/tabpage.c
@@ -194,7 +194,7 @@ Boolean nvim_tabpage_is_valid(Tabpage tabpage)
{
Error stub = ERROR_INIT;
Boolean ret = find_tab_by_handle(tabpage, &stub) != NULL;
- xfree(stub.msg);
+ api_clear_error(&stub);
return ret;
}
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index bd4a196367..2c78ffdec1 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -799,7 +799,7 @@ Array nvim_call_atomic(uint64_t channel_id, Array calls, Error *err)
validation_error:
api_free_array(results);
theend:
- api_free_error(&nested_error);
+ api_clear_error(&nested_error);
return rv;
}
diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c
index 254ab1c09f..b8326c1198 100644
--- a/src/nvim/api/window.c
+++ b/src/nvim/api/window.c
@@ -388,7 +388,7 @@ Boolean nvim_win_is_valid(Window window)
{
Error stub = ERROR_INIT;
Boolean ret = find_window_by_handle(window, &stub) != NULL;
- xfree(stub.msg);
+ api_clear_error(&stub);
return ret;
}
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 56dc35c31d..1e174712a3 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -6524,7 +6524,7 @@ static void api_wrapper(typval_T *argvars, typval_T *rettv, FunPtr fptr)
end:
api_free_array(args);
api_free_object(result);
- xfree(err.msg);
+ api_clear_error(&err);
}
/*
@@ -13795,7 +13795,7 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
end:
api_free_object(result);
- xfree(err.msg);
+ api_clear_error(&err);
}
// "rpcstart()" function (DEPRECATED)
@@ -16528,13 +16528,14 @@ static void f_termopen(typval_T *argvars, typval_T *rettv, FunPtr fptr)
Error err = ERROR_INIT;
dict_set_var(curbuf->b_vars, cstr_as_string("terminal_job_id"),
INTEGER_OBJ(rettv->vval.v_number), false, false, &err);
+ api_clear_error(&err);
dict_set_var(curbuf->b_vars, cstr_as_string("terminal_job_pid"),
INTEGER_OBJ(pid), false, false, &err);
+ api_clear_error(&err);
Terminal *term = terminal_open(topts);
data->term = term;
data->refcount++;
- xfree(err.msg);
return;
}
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c
index 06cdf7d1f1..bd7f84fed9 100644
--- a/src/nvim/msgpack_rpc/channel.c
+++ b/src/nvim/msgpack_rpc/channel.c
@@ -411,38 +411,38 @@ static void handle_request(Channel *channel, msgpack_object *request)
channel->id);
call_set_error(channel, buf);
}
- } else {
- // Retrieve the request handler
- MsgpackRpcRequestHandler handler;
- msgpack_object *method = msgpack_rpc_method(request);
+ api_clear_error(&error);
+ return;
+ }
+ // Retrieve the request handler
+ MsgpackRpcRequestHandler handler;
+ msgpack_object *method = msgpack_rpc_method(request);
- if (method) {
- handler = msgpack_rpc_get_handler_for(method->via.bin.ptr,
- method->via.bin.size);
- } else {
- handler.fn = msgpack_rpc_handle_missing_method;
- handler.async = true;
- }
+ if (method) {
+ handler = msgpack_rpc_get_handler_for(method->via.bin.ptr,
+ method->via.bin.size);
+ } else {
+ handler.fn = msgpack_rpc_handle_missing_method;
+ handler.async = true;
+ }
- Array args = ARRAY_DICT_INIT;
- if (!msgpack_rpc_to_array(msgpack_rpc_args(request), &args)) {
- handler.fn = msgpack_rpc_handle_invalid_arguments;
- handler.async = true;
- }
+ Array args = ARRAY_DICT_INIT;
+ if (!msgpack_rpc_to_array(msgpack_rpc_args(request), &args)) {
+ handler.fn = msgpack_rpc_handle_invalid_arguments;
+ handler.async = true;
+ }
- RequestEvent *event_data = xmalloc(sizeof(RequestEvent));
- event_data->channel = channel;
- event_data->handler = handler;
- event_data->args = args;
- event_data->request_id = request_id;
- incref(channel);
- if (handler.async) {
- on_request_event((void **)&event_data);
- } else {
- multiqueue_put(channel->events, on_request_event, 1, event_data);
- }
+ RequestEvent *event_data = xmalloc(sizeof(RequestEvent));
+ event_data->channel = channel;
+ event_data->handler = handler;
+ event_data->args = args;
+ event_data->request_id = request_id;
+ incref(channel);
+ if (handler.async) {
+ on_request_event((void **)&event_data);
+ } else {
+ multiqueue_put(channel->events, on_request_event, 1, event_data);
}
- xfree(error.msg);
}
static void on_request_event(void **argv)
@@ -469,7 +469,7 @@ static void on_request_event(void **argv)
api_free_array(args);
decref(channel);
xfree(e);
- xfree(error.msg);
+ api_clear_error(&error);
}
static bool channel_write(Channel *channel, WBuffer *buffer)
@@ -518,7 +518,7 @@ static void send_error(Channel *channel, uint64_t id, char *err)
&e,
NIL,
&out_buffer));
- xfree(e.msg);
+ api_clear_error(&e);
}
static void send_request(Channel *channel,
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index 43e4ea87e3..c44fe15be5 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -640,7 +640,7 @@ static void buf_set_term_title(buf_T *buf, char *title)
false,
false,
&err);
- xfree(err.msg);
+ api_clear_error(&err);
}
static int term_settermprop(VTermProp prop, VTermValue *val, void *data)
@@ -1225,11 +1225,10 @@ static bool is_focused(Terminal *term)
/* Only called from terminal_open where curbuf->terminal is the */ \
/* context */ \
o = dict_get_value(curbuf->b_vars, cstr_as_string(k), &err); \
- xfree(err.msg); \
+ api_clear_error(&err); \
if (o.type == kObjectTypeNil) { \
- Error err2 = ERROR_INIT; \
- o = dict_get_value(&globvardict, cstr_as_string(k), &err2); \
- xfree(err2.msg); \
+ o = dict_get_value(&globvardict, cstr_as_string(k), &err); \
+ api_clear_error(&err); \
} \
} while (0)
diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c
index 921f67fb7d..be016668fc 100644
--- a/src/nvim/tui/input.c
+++ b/src/nvim/tui/input.c
@@ -228,7 +228,7 @@ static int get_key_code_timeout(void)
if (nvim_get_option(cstr_as_string("ttimeout"), &err).data.boolean) {
ms = nvim_get_option(cstr_as_string("ttimeoutlen"), &err).data.integer;
}
- xfree(err.msg);
+ api_clear_error(&err);
return (int)ms;
}