32d3adcbf1d7b6d589e7213beac07291d2369fa7
braney
  Mon Oct 7 11:02:29 2019 -0700
require that FilterValues have a value in trackDb

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 7de6451..3259052 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -3637,33 +3637,36 @@
  * <columnName>Filter* or <columnName>.Filter* */
 {
 char *field = cloneString(cartVariable);
 int ix = strlen(field) - strlen(filterType); 
 assert(ix > 1);
 field[ix] = '\0';
 if (field[ix - 1] == '.')
     field[ix - 1] = '\0';
 
 return field;
 }
 
 filterBy_t *buildFilterBy(struct trackDb *tdb, struct cart *cart, struct asObject *as, char *filterName, char *name)
 /* Build a filterBy_t structure from a <column>FilterValues statement. */
 {
+char *field = extractFieldName(filterName, FILTER_VALUES_NAME);
 char *setting = trackDbSetting(tdb, filterName);
+if (isEmpty(setting))
+    errAbort("FilterValues setting of field '%s' must have a value.", field);
+
 char *value = cartUsualStringClosestToHome(cart, tdb, FALSE, filterName, setting);
-char *field = extractFieldName(filterName, FILTER_VALUES_NAME);
 
 filterBy_t *filterBy;
 AllocVar(filterBy);
 filterBy->column = field;
 filterBy->title = field; ///  title should come from AS file, or trackDb variable
 struct asColumn *asCol = asColumnFind(as, field);
 if (asCol != NULL)
     filterBy->title = asCol->comment;
 else
     errAbort("Building filter on field %s which is not in AS file.", field);
 filterBy->useIndex = FALSE;
 filterBy->slValues = slNameListFromCommaEscaped(value);
 chopUpValues(filterBy);
 if (cart != NULL)
     {