]> diplodocus.org Git - nmh/blobdiff - uip/mhparse.c
Fix a bug leading to message corruption with inc when incorporation more
[nmh] / uip / mhparse.c
index bf93b18ef51a0c4fd7befb1e1138af291e51e763..39a701dbf17c6931cb726e12a71d5f6e1bf02679 100644 (file)
@@ -262,7 +262,7 @@ get_content (FILE *in, char *file, int toplevel)
     char *np, *vp;
     CT ct;
     HF hp;
     char *np, *vp;
     CT ct;
     HF hp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     /* allocate the content structure */
     if (!(ct = (CT) calloc (1, sizeof(*ct))))
 
     /* allocate the content structure */
     if (!(ct = (CT) calloc (1, sizeof(*ct))))
@@ -276,10 +276,9 @@ get_content (FILE *in, char *file, int toplevel)
      * Parse the header fields for this
      * content into a linked list.
      */
      * Parse the header fields for this
      * content into a linked list.
      */
-    m_getfld_state_init (&gstate);
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, in)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, in)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -291,7 +290,7 @@ get_content (FILE *in, char *file, int toplevel)
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (gstate, name, buf, &bufsz, in);
+               state = m_getfld (&gstate, name, buf, &bufsz, in);
                vp = add (buf, vp);     /* add to previous value */
            }
 
                vp = add (buf, vp);     /* add to previous value */
            }