summaryrefslogtreecommitdiffstats
path: root/src/ex_cmds2.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-06-26 22:34:35 +0000
committerBram Moolenaar <Bram@vim.org>2005-06-26 22:34:35 +0000
commitd9fba318b8465da7da0b19ec1b38f9371f46a173 (patch)
treef6182362e8cae65951ed71a8016d45e2bd4dc58a /src/ex_cmds2.c
parent80b29f273dd54bb716f8da4e97614d53b7c9540f (diff)
updated for version 7.0094v7.0094
Diffstat (limited to 'src/ex_cmds2.c')
-rw-r--r--src/ex_cmds2.c46
1 files changed, 31 insertions, 15 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 45bd2ee63f..29687d2fc2 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -591,7 +591,7 @@ ex_debuggreedy(eap)
}
/*
- * ":breakdel".
+ * ":breakdel" and ":profdel".
*/
void
ex_breakdel(eap)
@@ -603,13 +603,20 @@ ex_breakdel(eap)
int del_all = FALSE;
int i;
linenr_T best_lnum = 0;
+ garray_T *gap;
+
+ gap = &dbg_breakp;
+#ifdef FEAT_PROFILE
+ if (eap->cmdidx == CMD_profdel)
+ gap = &prof_ga;
+#endif
if (vim_isdigit(*eap->arg))
{
/* ":breakdel {nr}" */
nr = atol((char *)eap->arg);
- for (i = 0; i < dbg_breakp.ga_len; ++i)
- if (BREAKP(i).dbg_nr == nr)
+ for (i = 0; i < gap->ga_len; ++i)
+ if (DEBUGGY(gap, i).dbg_nr == nr)
{
todel = i;
break;
@@ -623,12 +630,12 @@ ex_breakdel(eap)
else
{
/* ":breakdel {func|file} [lnum] {name}" */
- if (dbg_parsearg(eap->arg, &dbg_breakp) == FAIL)
+ if (dbg_parsearg(eap->arg, gap) == FAIL)
return;
- bp = &BREAKP(dbg_breakp.ga_len);
- for (i = 0; i < dbg_breakp.ga_len; ++i)
+ bp = &DEBUGGY(gap, gap->ga_len);
+ for (i = 0; i < gap->ga_len; ++i)
{
- bpi = &BREAKP(i);
+ bpi = &DEBUGGY(gap, i);
if (bp->dbg_type == bpi->dbg_type
&& STRCMP(bp->dbg_name, bpi->dbg_name) == 0
&& (bp->dbg_lnum == bpi->dbg_lnum
@@ -646,18 +653,27 @@ ex_breakdel(eap)
if (todel < 0)
EMSG2(_("E161: Breakpoint not found: %s"), eap->arg);
else
- while (dbg_breakp.ga_len > 0)
+ {
+ while (gap->ga_len > 0)
{
- vim_free(BREAKP(todel).dbg_name);
- vim_free(BREAKP(todel).dbg_prog);
- --dbg_breakp.ga_len;
- if (todel < dbg_breakp.ga_len)
- mch_memmove(&BREAKP(todel), &BREAKP(todel + 1),
- (dbg_breakp.ga_len - todel) * sizeof(struct debuggy));
- ++debug_tick;
+ vim_free(DEBUGGY(gap, todel).dbg_name);
+ vim_free(DEBUGGY(gap, todel).dbg_prog);
+ --gap->ga_len;
+ if (todel < gap->ga_len)
+ mch_memmove(&DEBUGGY(gap, todel), &DEBUGGY(gap, todel + 1),
+ (gap->ga_len - todel) * sizeof(struct debuggy));
+#ifdef FEAT_PROFILE
+ if (eap->cmdidx == CMD_breakdel)
+#endif
+ ++debug_tick;
if (!del_all)
break;
}
+
+ /* If all breakpoints were removed clear the array. */
+ if (gap->ga_len == 0)
+ ga_clear(gap);
+ }
}
/*