a6c175029974819a429e1074ea5d29d8b69f43ce
chmalee
  Tue Jul 30 10:28:26 2019 -0700
Forgot one place to prepend genome name after Hiram feedback

diff --git src/hg/utils/hubCheck/hubCheck.c src/hg/utils/hubCheck/hubCheck.c
index af819cb..aaf42dcb8 100644
--- src/hg/utils/hubCheck/hubCheck.c
+++ src/hg/utils/hubCheck/hubCheck.c
@@ -718,31 +718,31 @@
 
     if (metaPairs != NULL)
         {
         printf("%s\n", trackHubSkipHubName(tdb->track));
         struct slPair *pair;
         for(pair = metaPairs; pair; pair = pair->next)
             {
             printf("\t%s : %s\n", pair->name, (char *)pair->val);
             }
         printf("\n");
         }
     slPairFreeValsAndList(&metaPairs);
     }
 
 struct trackDb *tempTdb = NULL;
-char *textName, *parentName = NULL;
+char *textName = NULL;
 char idName[512];
 struct errCatch *errCatch = errCatchNew();
 boolean trackIsContainer = (tdbIsComposite(tdb) || tdbIsCompositeView(tdb) || tdbIsContainer(tdb));
 
 // first get down into the subtracks
 if (tdb->subtracks != NULL)
     {
     for (tempTdb = tdb->subtracks; tempTdb != NULL; tempTdb = tempTdb->next)
         retVal |= hubCheckTrack(hub, genome, tempTdb, options, errors);
     }
 
 // for when assembly hubs have tracks with the same name, prepend assembly name to id
 safef(idName, sizeof(idName), "%s_%s", trackHubSkipHubName(genome->name), trackHubSkipHubName(tdb->track));
 
 if (options->htmlOut)
@@ -766,33 +766,34 @@
 if (errCatch->gotError)
     {
     trackDbErrorCount += 1;
     retVal = 1;
     if (!options->htmlOut)
         dyStringPrintf(errors, "%s", errCatch->message->string);
     }
 errCatchFree(&errCatch);
 
 if (options->htmlOut)
     {
     if (trackIsContainer)
         {
         for (tempTdb = tdb->subtracks; tempTdb != NULL; tempTdb = tempTdb->next)
             {
+            char subtrackName[512];
+            safef(subtrackName, sizeof(subtrackName), "%s_%s", trackHubSkipHubName(genome->name), trackHubSkipHubName(tempTdb->track));
             textName = trackHubSkipHubName(tempTdb->longLabel);
-            parentName = trackHubSkipHubName(tdb->track);
-            dyStringPrintf(errors, "%s,", makeFolderObjectString(idName, textName, parentName, "TRACK", TRUE, retVal));
+            dyStringPrintf(errors, "%s,", makeFolderObjectString(subtrackName, textName, idName, "TRACK", TRUE, retVal));
             }
         }
     else if (!retVal)
         {
         // add "Error" to the trackname to force uniqueness for the jstree
         dyStringPrintf(errors, "{icon: 'fa fa-plus', "
             "id:'%sError', text:'No trackDb configuration errors', parent:'%s'}", idName, idName);
         }
     dyStringPrintf(errors, "];\n");
     }
 
 return retVal;
 }
 
 
@@ -862,30 +863,31 @@
     genomeErrorCount += tdbCheckVal;
     if (options->htmlOut)
         {
         // when assembly hubs have tracks with the same name, prepend assembly name to id
         char name[512];
         safef(name, sizeof(name), "%s_%s", trackHubSkipHubName(genome->name), trackHubSkipHubName(tdb->track));
         dyStringPrintf(errors, "%s", makeFolderObjectString(name, tdb->longLabel, genomeName, "TRACK", TRUE, tdbCheckVal ? TRUE : FALSE));
         if (tdb->next != NULL)
             dyStringPrintf(errors, ",");
         }
     }
 if (options->htmlOut)
     dyStringPrintf(errors, "];\n");
 
 dyStringPrintf(errors, "%s", tdbDyString->string);
+dyStringClear(tdbDyString);
 
 return genomeErrorCount;
 }
 
 
 int trackHubCheck(char *hubUrl, struct trackHubCheckOptions *options, struct dyString *errors)
 /* Check a track data hub for integrity. Put errors in dyString.
  *      return 0 if hub has no errors, 1 otherwise
  *      if options->checkTracks is TRUE, check remote files of individual tracks
  */
 {
 struct errCatch *errCatch = errCatchNew();
 struct trackHub *hub = NULL;
 int retVal = 0;