X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffolder_realloc.c;fp=sbr%2Ffolder_realloc.c;h=1d2b140a1e3597516c8bbad67c367b06c288f06b;hp=6a94a0077c1cde2402549dc1332a31d6385ff96a;hb=a485ed478abbd599d8c9aab48934e7a26733ecb1;hpb=f480c03187724e54e5391ee61b810827da319a6c diff --git a/sbr/folder_realloc.c b/sbr/folder_realloc.c index 6a94a00..1d2b140 100644 --- a/sbr/folder_realloc.c +++ b/sbr/folder_realloc.c @@ -1,4 +1,3 @@ - /* * folder_realloc.c -- realloc a folder/msgs structure * @@ -21,67 +20,67 @@ struct msgs * folder_realloc (struct msgs *mp, int lo, int hi) { - int msgnum; + int msgnum; - /* sanity checks */ - if (lo < 1) - adios (NULL, "BUG: called folder_realloc with lo (%d) < 1", lo); - if (hi < 1) - adios (NULL, "BUG: called folder_realloc with hi (%d) < 1", hi); - if (mp->nummsg > 0 && lo > mp->lowmsg) - adios (NULL, "BUG: called folder_realloc with lo (%d) > mp->lowmsg (%d)", - lo, mp->lowmsg); - if (mp->nummsg > 0 && hi < mp->hghmsg) - adios (NULL, "BUG: called folder_realloc with hi (%d) < mp->hghmsg (%d)", - hi, mp->hghmsg); + /* sanity checks */ + if (lo < 1) + adios (NULL, "BUG: called folder_realloc with lo (%d) < 1", lo); + if (hi < 1) + adios (NULL, "BUG: called folder_realloc with hi (%d) < 1", hi); + if (mp->nummsg > 0 && lo > mp->lowmsg) + adios (NULL, "BUG: called folder_realloc with lo (%d) > mp->lowmsg (%d)", + lo, mp->lowmsg); + if (mp->nummsg > 0 && hi < mp->hghmsg) + adios (NULL, "BUG: called folder_realloc with hi (%d) < mp->hghmsg (%d)", + hi, mp->hghmsg); - /* Check if we really need to reallocate anything */ - if (lo == mp->lowoff && hi == mp->hghoff) - return mp; + /* Check if we really need to reallocate anything */ + if (lo == mp->lowoff && hi == mp->hghoff) + return mp; - if (lo == mp->lowoff) { - /* - * We are just extending (or shrinking) the end of message - * status array. So we don't have to move anything and can - * just realloc the message status array. - */ - mp->msgstats = mh_xrealloc (mp->msgstats, MSGSTATSIZE(mp, lo, hi)); - } else { - /* - * We are changing the offset of the message status - * array. So we will need to shift everything. - */ - seqset_t *tmpstats; + if (lo == mp->lowoff) { + /* + * We are just extending (or shrinking) the end of message + * status array. So we don't have to move anything and can + * just realloc the message status array. + */ + mp->msgstats = mh_xrealloc (mp->msgstats, MSGSTATSIZE(mp, lo, hi)); + } else { + /* + * We are changing the offset of the message status + * array. So we will need to shift everything. + */ + seqset_t *tmpstats; - /* first allocate the new message status space */ - tmpstats = mh_xmalloc (MSGSTATSIZE(mp, lo, hi)); + /* first allocate the new message status space */ + tmpstats = mh_xmalloc (MSGSTATSIZE(mp, lo, hi)); - /* then copy messages status array with shift */ - if (mp->nummsg > 0) { - for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) - tmpstats[msgnum - lo] = mp->msgstats[msgnum - mp->lowoff]; + /* then copy messages status array with shift */ + if (mp->nummsg > 0) { + for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) + tmpstats[msgnum - lo] = mp->msgstats[msgnum - mp->lowoff]; + } + free(mp->msgstats); + mp->msgstats = tmpstats; } - free(mp->msgstats); - mp->msgstats = tmpstats; - } - mp->lowoff = lo; - mp->hghoff = hi; + mp->lowoff = lo; + mp->hghoff = hi; - /* - * Clear all the flags for entries outside - * the current message range for this folder. - */ - if (mp->nummsg > 0) { - for (msgnum = mp->lowoff; msgnum < mp->lowmsg; msgnum++) - clear_msg_flags (mp, msgnum); - for (msgnum = mp->hghmsg + 1; msgnum <= mp->hghoff; msgnum++) - clear_msg_flags (mp, msgnum); - } else { - /* no messages, so clear entire range */ - for (msgnum = mp->lowoff; msgnum <= mp->hghoff; msgnum++) - clear_msg_flags (mp, msgnum); - } + /* + * Clear all the flags for entries outside + * the current message range for this folder. + */ + if (mp->nummsg > 0) { + for (msgnum = mp->lowoff; msgnum < mp->lowmsg; msgnum++) + clear_msg_flags (mp, msgnum); + for (msgnum = mp->hghmsg + 1; msgnum <= mp->hghoff; msgnum++) + clear_msg_flags (mp, msgnum); + } else { + /* no messages, so clear entire range */ + for (msgnum = mp->lowoff; msgnum <= mp->hghoff; msgnum++) + clear_msg_flags (mp, msgnum); + } - return mp; + return mp; }