616f4b3c9fb1e234c4998202afd9718a7b00699c braney Wed May 29 10:24:59 2019 -0700 put out a warning instead of crashing if the number of subtracks in a subGroup is zero. #23364 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 05cafc2..585e876 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -2698,30 +2698,35 @@ { // This should only get set through membersForAll which should not be freed. if ((*members)->selected != NULL || (*members)->subtrackList != NULL) return; freeMem((*members)->setting); freeMem((*members)->tags); freeMem((*members)->titles); freez(members); } } static members_t *subgroupMembersWeedOutEmpties(struct trackDb *parentTdb, members_t *members, struct cart *cart) // Weed out members of a subgroup without any subtracks, alters memory in place! { +if (members->count == 0) + { + warn("No subtracks in group: %s. This indicates a problem in the subGroup line for this group.", members->groupTitle); + return members; + } // First tally all subtrack counts int ixIn=0; struct slRef *subtrackRef, *subtrackRefList = trackDbListGetRefsToDescendantLeaves(parentTdb->subtracks); struct trackDb *subtrack; members->subtrackCount = needMem(members->count * sizeof(int)); members->currentlyVisible = needMem(members->count * sizeof(int)); members->subtrackList = needMem(members->count * sizeof(struct slRef *)); for (subtrackRef = subtrackRefList; subtrackRef != NULL; subtrackRef = subtrackRef->next) { subtrack = subtrackRef->val; char *belongsTo =NULL; if (subgroupFind(subtrack,members->groupTag,&belongsTo)) { if (-1 != (ixIn = stringArrayIx(belongsTo, members->tags, members->count)))