fix logic bug in getthreadid
[mmh] / sbr / getthreadid.c
index 41e3e22..a1ad7a0 100644 (file)
@@ -14,15 +14,17 @@ getthreadid(const char *path)
        enum state state = FLD2;
        FILE *file = fopen(path, "r");
 
-       while (state == FLD2 && !msgid && !referens) {
+       while (state == FLD2 && !(msgid && referens)) {
                switch (state = m_getfld2(state, &f, file)) {
                case FLD2:
                        if (strncasecmp("message-id", f.name, f.namelen)==0) {
                                msgid = f.value;
                                f.value = NULL;
+                               f.alloclen = 0;
                        } else if (strncasecmp("references", f.name, f.namelen)==0) {
                                referens = f.value;
                                f.value = NULL;
+                               f.alloclen = 0;
                        }
                        break;
                default: