6e23c057401f7a45a1c69033b815f9cca9ddb3b3 braney Thu Feb 21 14:00:23 2013 -0800 free list of chrom names from twoBit library, change trackHubGetHubLabels to trackHubGetCladeLables (from code review #10237) diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 7bd3fc1..39905f2 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -125,31 +125,31 @@ return db; } struct dbDb *trackHubDbDbFromAssemblyDb(char *database) /* Return a dbDb structure for just this database. */ { struct hashEl *hel = hashLookup(hubAssemblyHash, database); if (hel == NULL) return NULL; struct trackHubGenome *genome = hel->val; return makeDbDbFromAssemblyGenome(genome); } -struct slPair *trackHubGetHubLabels() +struct slPair *trackHubGetCladeLabels() /* Get a list of labels describing the loaded assembly data hubs. */ { if (globalAssemblyHubList == NULL) return NULL; struct slPair *clade, *cladeList = NULL; struct trackHub *trackHub = globalAssemblyHubList; for(;trackHub; trackHub = trackHub->next) { AllocVar(clade); slAddHead(&cladeList, clade); clade->name = cloneString(trackHub->name); @@ -185,57 +185,63 @@ } return dbList; } int trackHubChromCount(char *database) /* Return number of chromosomes in a assembly data hub. */ { struct hashEl *hel = hashLookup(hubAssemblyHash, database); if (hel == NULL) return 0; struct trackHubGenome *genome = hel->val; struct slName *chromList = twoBitSeqNamesExt(genome->twoBitPath, TRUE); -return slCount(chromList); +int num = slCount(chromList); +slListFree(&chromList); +return num; } struct slName *trackHubAllChromNames(char *database) /* Return a list of all the chrom names in this assembly hub database. */ +/* Free with slListFree. */ { struct hashEl *hel = hashLookup(hubAssemblyHash, database); if (hel == NULL) return 0; struct trackHubGenome *genome = hel->val; struct slName *chromList = twoBitSeqNamesExt(genome->twoBitPath, TRUE); return chromList; } char *trackHubDefaultChrom(char *database) /* Return the default chromosome for this track hub assembly. */ { struct hashEl *hel = hashLookup(hubAssemblyHash, database); if (hel == NULL) return NULL; struct trackHubGenome *genome = hel->val; struct slName *chromList = twoBitSeqNamesExt(genome->twoBitPath, TRUE); -return chromList->name; +char *defaultName = cloneString( chromList->name); +slListFree(&chromList); + +return defaultName; } struct chromInfo *trackHubChromInfo(char *database, char *chrom) /* Return a chromInfo structure for just this chrom in this database. */ { if (hubAssemblyHash == NULL) return NULL; struct hashEl *hel = hashLookup(hubAssemblyHash, database); if (hel == NULL) return NULL; struct trackHubGenome *genome = hel->val; struct chromInfo *ci; @@ -256,30 +262,31 @@ if (hel == NULL) return NULL; struct trackHubGenome *genome = hel->val; struct chromInfo *ci, *ciList = NULL; struct slName *chromList = twoBitSeqNamesExt(genome->twoBitPath, TRUE); for(; chromList; chromList = chromList->next) { AllocVar(ci); ci->chrom = cloneString(chromList->name); ci->fileName = genome->twoBitPath; ci->size = twoBitSeqSize(genome->tbf, chromList->name); slAddHead(&ciList, ci); } +slListFree(&chromList); return ciList; } static char *getRequiredGrpSetting(struct hash *hash, char *name, struct lineFile *lf) /* Grab a group setting out of the group hash. errAbort if not found. */ { char *str; if ((str = hashFindVal(hash, name)) == NULL) errAbort("missing required setting '%s' for group on line %d in file %s\n", name, lf->lineIx, lf->fileName); return str; } static struct grp *readGroupRa(char *groupFileName) /* Read in the ra file that describes the groups in an assembly hub. */