8a0285e2e86e8d604b21e1cc2a5cfaef4c28c00e
angie
  Wed May 22 11:29:22 2019 -0700
Look out for loss of files in cart var ss, in addition to hgPcrResult_*.  refs #22440

diff --git src/hg/hgSession/sessionData.c src/hg/hgSession/sessionData.c
index 0323e2a..41cc38c 100644
--- src/hg/hgSession/sessionData.c
+++ src/hg/hgSession/sessionData.c
@@ -480,25 +480,26 @@
             // replace with new file containing references to saved files and tables.
             char *oldTrackFile = cloneString(var->val);
             char *newTrackFile = saveTrackFile(cart, var->name, var->val,
                                                sessionDataDbPrefix, dbSuffix, sessionDir);
             if (newTrackFile && cartVarIsCustomComposite(var->name))
                 cartReplaceHubVars(cart, var->name, oldTrackFile, newTrackFile);
             freeMem(oldTrackFile);
             freeMem(newTrackFile);
             }
         else
             {
             // Regular cart var; save trash paths (possibly encoded) in value, if any are found.
             char *newVal = cloneString(var->val);
             saveTrashPaths(&newVal, sessionDir, FALSE);
             saveTrashPaths(&newVal, sessionDir, TRUE);
-            // Special case for lost hgPcr result trash files: prevent errAbort in hgTracks
-            if (startsWith("hgPcrResult_", var->name) && sameString(newVal, " "))
+            // Special case for lost hgPcr/blat result trash files: prevent errAbort in hgTracks
+            if ((startsWith("hgPcrResult_", var->name) || sameString("ss", var->name)) &&
+                sameString(newVal, " "))
                 cartRemove(cart, var->name);
             else if (newVal != var->val && differentString(newVal, var->val))
                 cartSetString(cart, var->name, newVal);
             freeMem(newVal);
             }
         }
     }
 }