X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/13ae9ba066e6b8c114daa6714895a56816465f49..df02833a36f5525edb5b274fb67ca46aa4e5e6c5:/sbr/seq_del.c diff --git a/sbr/seq_del.c b/sbr/seq_del.c index 8c353f38..670872ef 100644 --- a/sbr/seq_del.c +++ b/sbr/seq_del.c @@ -34,8 +34,8 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) /* * Get the number for this sequence */ - for (i = 0; mp->msgattrs[i]; i++) { - if (!strcmp (mp->msgattrs[i], cp)) { + for (i = 0; i < svector_size (mp->msgattrs); i++) { + if (!strcmp (svector_at (mp->msgattrs, i), cp)) { new_seq = 0; break; } @@ -50,15 +50,10 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) * create the sequence, if necessary */ if (new_seq) { - if (i >= NUMATTRS) { - advise (NULL, "only %d sequences allowed (no room for %s)!", NUMATTRS, cp); - return 0; - } - if (!(mp->msgattrs[i] = strdup (cp))) { + if (!(svector_push_back (mp->msgattrs, strdup (cp)))) { advise (NULL, "strdup failed"); return 0; } - mp->msgattrs[i + 1] = NULL; } /* * now add sequence bit to all existing messages @@ -83,6 +78,12 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) if (is_selected (mp, msgnum)) clear_sequence (mp, i, msgnum); + if (! strcmp (cp, current) && + mp->lowsel <= mp->curmsg && mp->curmsg <= mp->hghsel) { + /* Removed current message indication, so reset curmsg. */ + mp->curmsg = 0; + } + /* * Set the public/private bit for this sequence. */ @@ -115,13 +116,13 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) int seq_delmsg (struct msgs *mp, char *cp, int msgnum) { - int i; + size_t i; if (!seq_nameok (cp)) return 0; - for (i = 0; mp->msgattrs[i]; i++) { - if (!strcmp (mp->msgattrs[i], cp)) { + for (i = 0; i < svector_size (mp->msgattrs); i++) { + if (!strcmp (svector_at (mp->msgattrs, i), cp)) { clear_sequence (mp, i, msgnum); mp->msgflags |= SEQMOD; return 1;