diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/eval.c | 31 | ||||
| -rw-r--r-- | src/nvim/hardcopy.c | 2 | ||||
| -rw-r--r-- | src/nvim/msgpack_rpc/server.c | 2 | 
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;    } | 
