X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/030c6e4df060fcbc33db4495148267e90c960d9d..3c516d410d256012f843944b0f43a77d8c1ac146:/sbr/m_getfld.c?ds=inline diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index c6716284..f84d2933 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -313,7 +313,10 @@ void m_getfld_state_destroy (m_getfld_state_t *gstate) { m_getfld_state_t s = *gstate; if (s) { - if (s->fdelim) free (s->fdelim-1); + if (s->fdelim) { + free (s->fdelim-1); + free (s->pat_map); + } free (s); *gstate = 0; } @@ -431,7 +434,7 @@ read_more (m_getfld_state_t s) { size_t num_read; if (retain < s->end - s->readpos) retain = s->end - s->readpos; - /* assert (retain <= s->readpos - s->msg_buf <= sizeof msg_buf); */ + assert (retain <= s->readpos - s->msg_buf); /* Move what we want to retain at end of the buffer to the beginning. */ memmove (s->msg_buf, s->readpos - retain, retain); @@ -799,6 +802,7 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) } else { /* not a Unix style maildrop */ s->readpos -= s->bytes_read; + s->bytes_read = 0; delimstr = mmdlm2; s->msg_style = MS_MMDF; } @@ -883,6 +887,7 @@ m_Eom (m_getfld_state_t s, int c) Note that on input, a character had already been read with Getc(). It will be unget by m_getfld () on return. */ s->readpos -= s->bytes_read - 1; + s->bytes_read = 1; return 0; }