1212de18f5cfcd2473cc9f761ff7b089b3e88493
braney
  Fri Apr 20 16:47:23 2012 -0700
more work to advance #6152.   Now with documentation of synonymous changes, the actual changes in (non)synonumous changes, and a fix to gnawing problem of the exonstarts in the genePred disappearing
diff --git src/hg/lib/genePred.c src/hg/lib/genePred.c
index e07e423..807be2c 100644
--- src/hg/lib/genePred.c
+++ src/hg/lib/genePred.c
@@ -40,31 +40,32 @@
 "   ,score int";
 
 static char *name2FieldSql = 
 "  ,name2 varchar(255) not null,"    /* Secondary name. (e.g. name of gene) or NULL if not available */
 "   INDEX(name2)";
 
 static char *cdsStatFieldSql = 
 "  ,cdsStartStat enum('none', 'unk', 'incmpl', 'cmpl') not null,"    /* Status of cdsStart annotation */
 "   cdsEndStat enum('none', 'unk', 'incmpl', 'cmpl') not null";     /* Status of cdsEnd annotation */
 
 static char *exonFramesFieldSql = 
 "   ,exonFrames longblob not null";    /* List of frame for each exon, or -1 if no frame or not known. NULL if not available. */
 
 struct genePred *genePredLoad(char **row)
 /* Load a genePred from row fetched with select * from genePred
- * from database.  Dispose of this with genePredFree(). */
+ * from database.  Dispose of this with genePredFree(). 
+ * NOTE: cannabalizes the row argument */
 {
 struct genePred *ret;
 int sizeOne;
 
 AllocVar(ret);
 ret->exonCount = sqlUnsigned(row[7]);
 ret->name = cloneString(row[0]);
 ret->chrom = cloneString(row[1]);
 strcpy(ret->strand, row[2]);
 ret->txStart = sqlUnsigned(row[3]);
 ret->txEnd = sqlUnsigned(row[4]);
 ret->cdsStart = sqlUnsigned(row[5]);
 ret->cdsEnd = sqlUnsigned(row[6]);
 sqlUnsignedDynamicArray(row[8], &ret->exonStarts, &sizeOne);
 if (sizeOne != ret->exonCount)