7946c5e263cf909af673ecf7a7daa032d30fa11f
braney
  Thu Nov 9 12:00:54 2017 -0800
fix problem in #19914

diff --git src/hg/hgSession/hgSession.c src/hg/hgSession/hgSession.c
index a427070..1d7948b 100644
--- src/hg/hgSession/hgSession.c
+++ src/hg/hgSession/hgSession.c
@@ -1192,32 +1192,42 @@
 cartCopyCustomTracks(cart);
 cartCheckForCustomTracks(cart, dyMessage);
 hDisconnectCentral(&conn);
 return dyStringCannibalize(&dyMessage);
 }
 
 void doSaveLocal()
 /* Output current settings to be saved as a file on the user's machine.
  * Return a message confirming what we did. */
 {
 char *fileName = textOutSanitizeHttpFileName(cartString(cart, hgsSaveLocalFileName));
 char *compressType = cartString(cart, hgsSaveLocalFileCompress);
 struct pipeline *compressPipe = textOutInit(fileName, compressType, NULL);
 
 cleanHgSessionFromCart(cart);
+
+// if we're normally outputing the cart in table form, we want to turn that off
+// and turn it back on after we're through.
+char *tableSetting = cartOptionalString(cart,CART_DUMP_AS_TABLE);
+if (tableSetting != NULL)
+    cartRemove(cart,CART_DUMP_AS_TABLE);
+
 cartDump(cart);
 
+if (tableSetting != NULL)
+    cartSetString(cart, CART_DUMP_AS_TABLE, tableSetting);
+
 // Now add all the default visibilities to output.
 outDefaultTracks(cart, NULL);
 
 textOutClose(&compressPipe, NULL);
 }
 
 char *doLoad(boolean fromUrl, char *actionVar)
 /* Load settings from a file or URL sent by the user.
  * Return a message confirming what we did. */
 {
 struct dyString *dyMessage = dyStringNew(1024);
 struct lineFile *lf = NULL;
 webPushErrHandlersCartDb(cart, cartUsualString(cart, "db", NULL));
 if (fromUrl)
     {