0ca57143506dc2b09c5e0268eb32b1e437e3fa25
tdreszer
  Thu Jan 6 10:08:56 2011 -0800
Fixed bug an multiple mdb term query where early round has no results, so later hits are mistakenly seen as valid.
diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c
index 12b87d8..732c0e0 100644
--- src/hg/hgTracks/searchTracks.c
+++ src/hg/hgTracks/searchTracks.c
@@ -505,30 +505,32 @@
                     }
                 if (tmp != NULL)
                     {
                     if(metaTracks == NULL)
                         metaTracks = tmp;
                     else
                         metaTracks = slNameIntersection(metaTracks, tmp);
                     }
             #else///ifndif CV_SEARCH_SUPPORTS_FREETEXT
                 struct slName *tmp = mdbObjSearch(conn, mdbVar[i], mdbVal[i], "is", MDB_VAL_STD_TRUNCATION, TRUE, FALSE);
                 if(metaTracks == NULL)
                     metaTracks = tmp;
                 else
                     metaTracks = slNameIntersection(metaTracks, tmp);
             #endif///ndef CV_SEARCH_SUPPORTS_FREETEXT
+                if (metaTracks == NULL)
+                    break; // If there are no results in a round, then successive intersections will be empty too
                 }
             }
         for (el = metaTracks; el != NULL; el = el->next)
             hashAddInt(matchingTracks, el->name, 1);
 
         struct group *group;
         for (group = groupList; group != NULL; group = group->next)
             {
             if(groupSearch == NULL || sameString(group->name, groupSearch))
                 {
                 if (group->trackList != NULL)
                     {
                     struct trackRef *tr;
                     for (tr = group->trackList; tr != NULL; tr = tr->next)
                         {