5ba6d13d8817b098b3594afe5704b3e6a52c3d61
braney
  Thu Sep 29 12:50:25 2022 -0700
increase the size of the buffer to hold the default cart contents to be
arbitrarily large

diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index ee29bcd..0eb3012 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -250,36 +250,37 @@
 	       "%s id=%u looks corrupted -- starting over with new %s id.\n",
 	       table, id, table);
        cdb = NULL;
        }
     return cdb;
     }
 }
 
 static char *getDefaultCart(struct sqlConnection *conn)
 /* Get the default cart if any. */
 {
 char *contents = "";
 char *table = defaultCartTable();
 if (sqlTableExists(conn, table))
     {
-    char buffer[16 * 1024];
     char query[1024];
 
+    sqlSafef(query, sizeof query, "select length(contents) from %s", table);
+    int length = sqlQuickNum(conn, query) + 1;
+    contents = needLargeMem(length);
     sqlSafef(query, sizeof query, "select contents from %s", table);
-    sqlQuickQuery(conn, query, buffer, sizeof buffer);
-    contents = cloneString(buffer);
+    sqlQuickQuery(conn, query, contents, length);
     }
 return contents;
 }
 
 struct cartDb *loadDb(struct sqlConnection *conn, char *table, char *secureId, boolean *found)
 /* Load bits from database and save in hash. */
 {
 struct cartDb *cdb;
 boolean result = TRUE;
 
 cdb = cartDbLoadFromId(conn, table, secureId);
 if (!cdb)
     {
     result = FALSE;
     struct dyString *query = dyStringNew(256);