diff options
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 36 | 
1 files changed, 22 insertions, 14 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 6cabdcc45e..7c576c9238 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -13620,13 +13620,12 @@ static void f_setreg(typval_T *argvars, typval_T *rettv)    int regname;    char_u      *strregname;    char_u      *stropt; -  int append; +  bool append = false;    char_u yank_type;    long block_len;    block_len = -1;    yank_type = MAUTO; -  append = FALSE;    strregname = get_tv_string_chk(argvars);    rettv->vval.v_number = 1;             /* FAIL is default */ @@ -13644,7 +13643,7 @@ static void f_setreg(typval_T *argvars, typval_T *rettv)      for (; *stropt != NUL; ++stropt)        switch (*stropt) {        case 'a': case 'A':               /* append */ -        append = TRUE; +        append = true;          break;        case 'v': case 'c':               /* character-wise selection */          yank_type = MCHAR; @@ -19077,15 +19076,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);    } @@ -19108,9 +19118,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);  | 
