src/hg/lib/hui.c 1.248
1.248 2009/11/12 20:34:36 tdreszer
Fix uninitialized variables, which hit on matrix X no Y
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.247
retrieving revision 1.248
diff -b -B -U 4 -r1.247 -r1.248
--- src/hg/lib/hui.c 11 Nov 2009 22:04:48 -0000 1.247
+++ src/hg/lib/hui.c 12 Nov 2009 20:34:36 -0000 1.248
@@ -3037,8 +3037,9 @@
dimA=3, // dimA is start of first of the optional non-matrix, non-view dimensions
};
int dimMax=dimA; // This can expand, depending upon ABC dimensions
members_t* dimensions[27]; // Just pointers, so make a bunch!
+memset((char *)dimensions,0,sizeof(dimensions));
dimensions_t *dims = dimensionSettingsGet(parentTdb);
if(dims != NULL)
{
int ix;
@@ -5049,10 +5050,11 @@
else if (left && dimensionY && childTdb != NULL)
printf("<TH ALIGN=RIGHT nowrap>%s</TH>\n",labelWithVocabLink(parentTdb,childTdb,dimensionY->tag,dimensionY->values[ixY]));
}
-static int displayNonXYdimensions(struct cart *cart, struct trackDb *parentTdb)
-/* This will walk through all declared nonX&Y dimensions (X and Y is the 2D matrix of CBs. */
+static int displayABCdimensions(struct cart *cart, struct trackDb *parentTdb,int expected)
+/* This will walk through all declared nonX&Y dimensions (X and Y is the 2D matrix of CBs.
+ NOTE: ABC dims are only supported if there are X & Y both. Also expected number should be passed in */
{
int count=0,ix;
for(ix=0;ix<26;ix++)
{
@@ -5116,8 +5118,10 @@
}
}
puts("</TR>");
subgroupMembersFree(&dim);
+ if(count==expected)
+ break;
}
if(count>0)
puts("</TABLE>");
return count;
@@ -5131,9 +5135,10 @@
char objName[SMALLBUF];
char javascript[JBUFSIZE];
struct trackDb *subtrack;
-if(!dimensionsExist(parentTdb))
+dimensions_t *dims = dimensionSettingsGet(parentTdb);
+if(dims == NULL)
return FALSE;
int ixX,ixY;
members_t *dimensionX = subgroupMembersGetByDimension(parentTdb,'X');
@@ -5176,8 +5181,10 @@
if(dimensionX && !dimensionY)
safef(javascript, sizeof(javascript), "%s:</B>",dimensionX->title);
else if(!dimensionX && dimensionY)
safef(javascript, sizeof(javascript), "%s:</B>",dimensionY->title);
+else if(dims->count == 2)
+ safef(javascript, sizeof(javascript), "%s and %s:</B>",dimensionX->title,dimensionY->title);
else
safef(javascript, sizeof(javascript), "multiple variables:</B>");
puts(strLower(javascript));
@@ -5185,9 +5192,11 @@
puts("(<A HREF=\"../goldenPath/help/multiView.html\" title='Help on views' TARGET=_BLANK>help</A>)\n");
puts("<BR>\n");
-displayNonXYdimensions(cart,parentTdb);
+if(dims->count > 2)
+ displayABCdimensions(cart,parentTdb,(dims->count - 2)); // No dimABCs without X & Y both
+dimensionsFree(&dims);
printf("<TABLE class='greenBox' bgcolor='%s' borderColor='%s'>\n",COLOR_BG_DEFAULT,COLOR_BG_DEFAULT);
matrixXheadings(parentTdb,dimensionX,dimensionY,tdbsX,TRUE);