7bc26524a7cd5a31d65b7a092f8ae0d835710efc
galt
  Mon Nov 7 16:30:52 2016 -0800
Fixes #18300. Added a missing popAbortHandler in cart.c. Trying to deal with early warnings in hgTables. In our current code, early warnings do not actually work -- instead they usually just produce a duplicate page header. But early aborts do work. So we have decided to convert the hgTables resource output exceeded warnings to errAbort.

diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index 3d21b9a..fbde6fb 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -1584,33 +1584,36 @@
 cartExclude(cart, sessionVar);
 if (sameOk(cfgOption("signalsHandler"), "on"))  /* most cgis call this routine */
     initSigHandlers(hDumpStackEnabled());
 char *httpProxy = cfgOption("httpProxy");  /* most cgis call this routine */
 if (httpProxy)
     setenv("http_proxy", httpProxy, TRUE);   /* net.c cannot see the cart, pass the value through env var */
 return cart;
 }
 
 struct cart *cartAndCookieWithHtml(char *cookieName, char **exclude,
                                    struct hash *oldVars, boolean doContentType)
 /* Load cart from cookie and session cgi variable.  Write cookie
  * and optionally content-type part HTTP preamble to web page.  Don't
  * write any HTML though. */
 {
+// Note: early abort works fine but early warn does not
 htmlPushEarlyHandlers();
 struct cart *cart = cartForSession(cookieName, exclude, oldVars);
 popWarnHandler();
+popAbortHandler();
+
 cartWriteCookie(cart, cookieName);
 if (doContentType)
     {
     puts("Content-Type:text/html");
     puts("\n");
     }
 return cart;
 }
 
 struct cart *cartAndCookie(char *cookieName, char **exclude,
                            struct hash *oldVars)
 /* Load cart from cookie and session cgi variable.  Write cookie and
  * content-type part HTTP preamble to web page.  Don't write any HTML though. */
 {
 return cartAndCookieWithHtml(cookieName, exclude, oldVars, TRUE);