use memset to clear the msgstats in folder_realloc
[mmh] / sbr / seq_read.c
index 1fdccf9..4cc4223 100644 (file)
@@ -76,6 +76,9 @@ seq_public(struct msgs *mp)
        /* Use m_getfld to scan sequence file */
        for (state = FLD2;;) {
                switch (state = m_getfld2(state, &f, fp)) {
+               case LENERR2:
+                       state = FLD2;
+                       /* FALL */
                case FLD2:
                        seq_init(mp, mh_xstrdup(f.name), trimcpy(f.value));
                        continue;
@@ -207,9 +210,14 @@ seq_init(struct msgs *mp, char *name, char *field)
                        ** We iterate through messages in this range
                        ** and flip on bit for this sequence.
                        */
+                       if (k > mp->hghoff) {
+                               if (!(mp = folder_realloc(mp, mp->lowoff, k))) {
+                                       adios(EX_OSERR, NULL, "unable to allocate folder storage");
+                               }
+                               mp->hghoff = k;
+                       }
                        for (; j <= k; j++) {
-                               if (j >= mp->lowmsg && j <= mp->hghmsg &&
-                                               does_exist(mp, j))
+                               if (j >= mp->lowmsg && j <= mp->hghoff)
                                        add_sequence(mp, i, j);
                        }
                }