46d0cb2f5a90285bf6fc2de3ff9a3a3f542521ff
chmalee
  Wed May 10 10:42:02 2023 -0700
Fix for hgSearch not redirecting correctly when hgvs term is erroneous but a position can still be found. Fix hgSearch not handling errAborts and warns correctly when attempting to do a redirect, refs #31251

diff --git src/hg/inc/cartJson.h src/hg/inc/cartJson.h
index 78259e6..fba729c 100644
--- src/hg/inc/cartJson.h
+++ src/hg/inc/cartJson.h
@@ -31,30 +31,36 @@
  * Return the string contained in its jsonElement value, or defaultVal if not found. */
 
 char *cartJsonOptionalParam(struct hash *paramHash, char *name);
 /* Convenience function for a CartJsonHandler function: Look up name in paramHash.
  * Return the string contained in its jsonElement value, or NULL if not found. */
 
 char *cartJsonRequiredParam(struct hash *paramHash, char *name, struct jsonWrite *jw,
                             char *context);
 /* Convenience function for a CartJsonHandler function: Look up name in paramHash.
  * If found, return the string contained in its jsonElement value.
  * If not, write an error message (using context) and return NULL. */
 
 void cartJsonRegisterHandler(struct cartJson *cj, char *command, CartJsonHandler *handler);
 /* Associate handler with command; when javascript sends command, handler will be executed. */
 
+void cartJsonPushErrHandlers();
+/* Push warn and abort handlers for errAbort. */
+
+void cartJsonPopErrHandlers();
+/* Pop warn and abort handlers for errAbort. */
+
 void cartJsonExecute(struct cartJson *cj);
 /* Get commands from cgi, print Content-type, execute commands, print results as JSON. */
 
 void cartJsonFree(struct cartJson **pCj);
 /* Close **pCj's contents and nullify *pCj. */
 
 struct hgPositions *genomePosCJ(struct jsonWrite *jw, char *db, char *spec, char **retChromName,
                                int *retWinStart, int *retWinEnd, struct cart *cart, struct searchCategory *categories, boolean categorySearch);
 /* Search for positions in genome that match user query.
  * Return an hgp unless there is a problem.  hgp->singlePos will be set if a single
  * position matched. categorySearch determines whether to error out if we can't
  * uniquely determine a position for a multiTerm search
  * Otherwise display list of positions, put # of positions in retWinStart,
  * and return NULL. */