To: vim_dev@googlegroups.com Subject: Patch 8.1.0130 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.0130 Problem: ":profdel func" does not work if func was called already. (Dominique Pelle) Solution: Reset uf_profiling and add a flag to indicate initialization was done. Files: src/structs.h, src/userfunc.c *** ../vim-8.1.0129/src/structs.h 2018-06-23 19:22:45.614486258 +0200 --- src/structs.h 2018-06-30 18:12:48.678664711 +0200 *************** *** 1345,1350 **** --- 1345,1351 ---- garray_T uf_lines; /* function lines */ #ifdef FEAT_PROFILE int uf_profiling; /* TRUE when func is being profiled */ + int uf_prof_initialized; /* profiling the function as a whole */ int uf_tm_count; /* nr of calls */ proftime_T uf_tm_total; /* time spent in function + children */ *** ../vim-8.1.0129/src/userfunc.c 2018-05-22 18:31:30.001365739 +0200 --- src/userfunc.c 2018-06-30 18:20:15.704075693 +0200 *************** *** 293,302 **** fp->uf_scoped = NULL; #ifdef FEAT_PROFILE - fp->uf_tml_count = NULL; - fp->uf_tml_total = NULL; - fp->uf_tml_self = NULL; - fp->uf_profiling = FALSE; if (prof_def_func()) func_do_profile(fp); #endif --- 293,298 ---- *************** *** 706,711 **** --- 702,708 ---- #ifdef FEAT_PROFILE proftime_T wait_start; proftime_T call_start; + int started_profiling = FALSE; #endif /* If depth of calling is getting too high, don't execute the function */ *************** *** 921,927 **** --- 918,927 ---- if (do_profiling == PROF_YES) { if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL)) + { + started_profiling = TRUE; func_do_profile(fp); + } if (fp->uf_profiling || (fc->caller != NULL && fc->caller->func->uf_profiling)) { *************** *** 965,970 **** --- 965,973 ---- profile_add(&fc->caller->func->uf_tm_children, &call_start); profile_add(&fc->caller->func->uf_tml_children, &call_start); } + if (started_profiling) + // make a ":profdel func" stop profiling the function + fp->uf_profiling = FALSE; } #endif *************** *** 2522,2544 **** { int len = fp->uf_lines.ga_len; ! if (len == 0) ! len = 1; /* avoid getting error for allocating zero bytes */ ! fp->uf_tm_count = 0; ! profile_zero(&fp->uf_tm_self); ! profile_zero(&fp->uf_tm_total); ! if (fp->uf_tml_count == NULL) ! fp->uf_tml_count = (int *)alloc_clear((unsigned) (sizeof(int) * len)); ! if (fp->uf_tml_total == NULL) ! fp->uf_tml_total = (proftime_T *)alloc_clear((unsigned) ! (sizeof(proftime_T) * len)); ! if (fp->uf_tml_self == NULL) ! fp->uf_tml_self = (proftime_T *)alloc_clear((unsigned) ! (sizeof(proftime_T) * len)); ! fp->uf_tml_idx = -1; ! if (fp->uf_tml_count == NULL || fp->uf_tml_total == NULL ! || fp->uf_tml_self == NULL) ! return; /* out of memory */ fp->uf_profiling = TRUE; } --- 2525,2552 ---- { int len = fp->uf_lines.ga_len; ! if (!fp->uf_prof_initialized) ! { ! if (len == 0) ! len = 1; /* avoid getting error for allocating zero bytes */ ! fp->uf_tm_count = 0; ! profile_zero(&fp->uf_tm_self); ! profile_zero(&fp->uf_tm_total); ! if (fp->uf_tml_count == NULL) ! fp->uf_tml_count = (int *)alloc_clear( ! (unsigned)(sizeof(int) * len)); ! if (fp->uf_tml_total == NULL) ! fp->uf_tml_total = (proftime_T *)alloc_clear( ! (unsigned)(sizeof(proftime_T) * len)); ! if (fp->uf_tml_self == NULL) ! fp->uf_tml_self = (proftime_T *)alloc_clear( ! (unsigned)(sizeof(proftime_T) * len)); ! fp->uf_tml_idx = -1; ! if (fp->uf_tml_count == NULL || fp->uf_tml_total == NULL ! || fp->uf_tml_self == NULL) ! return; /* out of memory */ ! fp->uf_prof_initialized = TRUE; ! } fp->uf_profiling = TRUE; } *************** *** 2568,2574 **** { --todo; fp = HI2UF(hi); ! if (fp->uf_profiling) { if (sorttab != NULL) sorttab[st_len++] = fp; --- 2576,2582 ---- { --todo; fp = HI2UF(hi); ! if (fp->uf_prof_initialized) { if (sorttab != NULL) sorttab[st_len++] = fp; *** ../vim-8.1.0129/src/version.c 2018-06-30 17:09:23.039956879 +0200 --- src/version.c 2018-06-30 18:12:14.990860555 +0200 *************** *** 791,792 **** --- 791,794 ---- { /* Add new patch number below this line */ + /**/ + 130, /**/ -- hundred-and-one symptoms of being an internet addict: 149. You find your computer sexier than your girlfriend /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///