1ee99ce653ae839e4774120c3f3923dc129c8533
angie
  Fri Mar 16 14:41:14 2018 -0700
Moved jsonStringEscape inside jsonWriteString because it's silly to have to remember to call it first every time.
tagStorm programs were doing their own limited escaping (double-quotes only); now they get the same escaping as everywhere else.
refs MLQ #21113

diff --git src/hg/hgGateway/hgGateway.c src/hg/hgGateway/hgGateway.c
index 0109356..0860348 100644
--- src/hg/hgGateway/hgGateway.c
+++ src/hg/hgGateway/hgGateway.c
@@ -146,33 +146,31 @@
         jsonWriteString(jw, "hubUrl", hubUrl);
         }
     else
         {
         dbOptions = hGetDbOptionsForGenome(genome);
         safecpy(genomeLabel, sizeof(genomeLabel), genome);
         }
     jsonWriteValueLabelList(jw, "dbOptions", dbOptions);
     jsonWriteString(jw, "genomeLabel", genomeLabel);
     jsonWriteString(jw, "position", position);
     char *suggestTrack = NULL;
     if (! trackHubDatabase(db))
         suggestTrack = assemblyGeneSuggestTrack(db);
     jsonWriteString(jw, "suggestTrack", suggestTrack);
     char *description = maybeGetDescriptionText(db);
-    //#*** TODO: move jsonStringEscape inside jsonWriteString
-    char *encoded = jsonStringEscape(description);
-    jsonWriteString(jw, "description", encoded);
+    jsonWriteString(jw, "description", description);
     listAssemblyHubs(jw);
     }
 }
 
 static void setTaxId(struct cartJson *cj, struct hash *paramHash)
 /* Set db and genome according to taxId (and/or db) and return the info we'll need
  * to fill in the findPosition section. */
 {
 char *taxIdStr = cartJsonRequiredParam(paramHash, "taxId", cj->jw, "setTaxId");
 char *db = cartJsonOptionalParam(paramHash, "db");
 int taxId = atoi(taxIdStr);
 if (isEmpty(db))
     db = hDbForTaxon(taxId);
 if (isEmpty(db))
     jsonWriteStringf(cj->jw, "error", "No db for taxId '%s'", taxIdStr);