aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c31
-rw-r--r--src/nvim/hardcopy.c2
-rw-r--r--src/nvim/msgpack_rpc/server.c2
3 files changed, 22 insertions, 13 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 5056dbfcc7..66c78f1390 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -19085,15 +19085,26 @@ call_user_func (
--no_wait_return;
}
}
+
+ bool func_not_yet_profiling_but_should =
+ do_profiling == PROF_YES
+ && !fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL);
+
+ if (func_not_yet_profiling_but_should)
+ func_do_profile(fp);
+
+ bool func_or_func_caller_profiling =
+ do_profiling == PROF_YES
+ && (fp->uf_profiling
+ || (fc->caller != NULL && fc->caller->func->uf_profiling));
+
+ if (func_or_func_caller_profiling) {
+ ++fp->uf_tm_count;
+ call_start = profile_start();
+ fp->uf_tm_children = profile_zero();
+ }
+
if (do_profiling == PROF_YES) {
- if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
- func_do_profile(fp);
- if (fp->uf_profiling
- || (fc->caller != NULL && fc->caller->func->uf_profiling)) {
- ++fp->uf_tm_count;
- call_start = profile_start();
- fp->uf_tm_children = profile_zero();
- }
script_prof_save(&wait_start);
}
@@ -19116,9 +19127,7 @@ call_user_func (
rettv->vval.v_number = -1;
}
- if (do_profiling == PROF_YES && (fp->uf_profiling
- || (fc->caller != NULL &&
- fc->caller->func->uf_profiling))) {
+ if (func_or_func_caller_profiling) {
call_start = profile_end(call_start);
call_start = profile_sub_wait(wait_start, call_start);
fp->uf_tm_total = profile_add(fp->uf_tm_total, call_start);
diff --git a/src/nvim/hardcopy.c b/src/nvim/hardcopy.c
index 6e9ad02b3a..0cbbe95572 100644
--- a/src/nvim/hardcopy.c
+++ b/src/nvim/hardcopy.c
@@ -2130,7 +2130,7 @@ int mch_print_init(prt_settings_T *psettings, char_u *jobname, int forceit)
}
/* Use first encoding matched if no charset matched */
- if (p_mbchar == NULL && p_mbenc_first != NULL) {
+ if (p_mbenc_first != NULL && p_mbchar == NULL) {
p_mbenc = p_mbenc_first;
cmap = effective_cmap;
}
diff --git a/src/nvim/msgpack_rpc/server.c b/src/nvim/msgpack_rpc/server.c
index 8fb2902b0b..5e3fd100da 100644
--- a/src/nvim/msgpack_rpc/server.c
+++ b/src/nvim/msgpack_rpc/server.c
@@ -238,7 +238,7 @@ void server_stop(char *endpoint)
}
}
- if (i == servers.ga_len) {
+ if (i >= servers.ga_len) {
ELOG("Not listening on %s", addr);
return;
}