--- struct.c	Tue Apr 10 19:03:16 2001
+++ struct.c.fixed	Thu Apr 12 17:23:04 2001
@@ -483,22 +483,23 @@
 	s = emalloc(strlen(subject) + 1);
 	saved_s = strcpy(s, subject);
 
-	do {
+        if (isre(s, NULL))
+            do {
 #if DEBUG_THREAD > 1
-	    fprintf(stderr, "extra %s\n", s);
+                fprintf(stderr, "extra %s\n", s);
 #endif
-	    ep = etable[hash(s)];
-	    while (ep != NULL) {
-		if ((strcasecmp(s, ep->data->subject) == 0) &&
-		    (msgnum != ep->data->msgnum)) {
-		    match = 1;
-		    if (ep->data->msgnum < lowest_so_far)
-			lowest_so_far = ep->data->msgnum;
-		}
-		ep = ep->next;
-	    }
-	    s = oneunre(s);
-	} while (s != NULL);
+                ep = etable[hash(s)];
+                while (ep != NULL) {
+                    if ((strcasecmp(s, ep->data->subject) == 0) &&
+                        (msgnum != ep->data->msgnum)) {
+                        match = 1;
+                        if (ep->data->msgnum < lowest_so_far)
+                            lowest_so_far = ep->data->msgnum;
+                    }
+                    ep = ep->next;
+                }
+                s = oneunre(s);
+            } while (s != NULL);
 
 	free(saved_s);
 
