baef96f3db3202daa9e254b029cbdac78a8f409e
angie
  Fri Aug 27 12:46:08 2021 -0700
Fix incorrect-freeing error introduced yesterday in 2aa99ff0.

diff --git src/hg/hgPhyloPlace/writeCustomTracks.c src/hg/hgPhyloPlace/writeCustomTracks.c
index fd27450..188ef73 100644
--- src/hg/hgPhyloPlace/writeCustomTracks.c
+++ src/hg/hgPhyloPlace/writeCustomTracks.c
@@ -329,55 +329,60 @@
     nodeMuts = slRefListCopyReverse(parentMuts);
     slAddHead(&nodeMuts, slRefNew(sncs));
     slReverse(&nodeMuts);
     }
 if (node->numEdges > 0)
     {
     int i;
     for (i = 0;  i < node->numEdges;  i++)
         treeToBaseAlleles(node->edges[i], condensedNodes, refBases, sampleBases, sampleToIx,
                           nodeMuts);
     }
 else
     {
     // Leaf node: if in sampleToIx, then for each mutation (beware back-mutations),
     // set refBase if it has not already been set and set sample allele.
+    boolean allocdHere = FALSE;
     struct slName *nameList = hashFindVal(condensedNodes, node->ident->name);
     if (nameList == NULL)
+        {
         nameList = slNameNew(node->ident->name);
+        allocdHere = TRUE;
+        }
     struct slName *name;
     for (name = nameList;  name != NULL;  name = name->next)
         {
         int ix = hashIntValDefault(sampleToIx, name->name, -1);
         if (ix >= 0)
             {
             struct slRef *mlRef;
             for (mlRef = nodeMuts;  mlRef != NULL;  mlRef = mlRef->next)
                 {
                 struct singleNucChange *snc, *sncs = mlRef->val;
                 for (snc = sncs;  snc != NULL;  snc = snc->next)
                     {
                     // Don't let a back-mutation overwrite the true ref value:
                     if (!refBases[snc->chromStart])
                         refBases[snc->chromStart] = snc->refBase;
                     if (sampleBases[snc->chromStart] == NULL)
                         AllocArray(sampleBases[snc->chromStart], sampleToIx->elCount);
                     sampleBases[snc->chromStart][ix] = snc->newBase;
                     }
                 }
             }
         }
+    if (allocdHere)
         slFreeList(&nameList);
     }
 if (node->priv != NULL)
     slFreeList(&nodeMuts);
 }
 
 static void vcfToBaseAlleles(struct vcfFile *vcff, char *refBases, char **sampleBases,
                              struct hash *sampleToIx)
 /* Build up an array of reference bases indexed by position, and an array (indexed by pos)
  * of sample allele arrays indexed by sampleToIx, from variants & genotypes in vcff. */
 {
 int gtIxToSampleIx[vcff->genotypeCount];
 int gtIx;
 for (gtIx = 0;  gtIx < vcff->genotypeCount;  gtIx++)
     {