61308020150706a0ce4437616eea098620f92f6d
markd
  Sun Dec 13 11:31:03 2020 -0800
fixed snake track requesting a negative length of DNA in self-alignments #25987

diff --git src/hg/hgTracks/snakeTrack.c src/hg/hgTracks/snakeTrack.c
index 35ec460..1e9c9bc 100644
--- src/hg/hgTracks/snakeTrack.c
+++ src/hg/hgTracks/snakeTrack.c
@@ -1111,31 +1111,31 @@
                 if (frac > 1.0)
                     frac = 1.0;
                 red = 255 - 255 * frac;
                 blue = 255 * frac;
             } else {
                 double frac = ((double) targetInsertSize - queryInsertSize) / targetInsertSize;
                 if (frac > 1.0)
                     frac = 1.0;
                 red = 255 - 255 * frac;
                 green = 255 * frac;
             }
             color = hvGfxFindColorIx(hvg, red, green, blue);
         }
         double queryGapNFrac = 0.0;
         double queryGapMaskedFrac = 0.0;
-        if (qs - lastQEnd != 0 && qs - lastQEnd < 1000000) {
+        if ((qs > lastQEnd) && qs - lastQEnd < 1000000) {
             // sketchy
             char *fileName = trackDbSetting(tg->tdb, "bigDataUrl");
             char *otherSpecies = trackDbSetting(tg->tdb, "otherSpecies");
             int handle = halOpenLOD(fileName, NULL);
             char *queryGapDna = halGetDna(handle, otherSpecies, sf->qName, lastQEnd, qs, NULL);
             long long numNs = 0;
             long long numMasked = 0;
             char *i = queryGapDna;
             while (*i != '\0') {
                 if (*i == 'N' || *i == 'n') {
                     numNs++;
                     numMasked++;
                 }
                 if (*i == 'a' || *i == 't' || *i == 'g' || *i == 'c') {
                         numMasked++;