b1ece0f85392e86c466550496925f7f1cffa61be
hiram
  Mon Sep 8 16:06:09 2025 -0700
hgParseChromRange does not require a database or genome name refs #35976

diff --git src/hg/hubApi/liftOver.c src/hg/hubApi/liftOver.c
index 4d8c54fd774..ebda17f6fce 100644
--- src/hg/hubApi/liftOver.c
+++ src/hg/hubApi/liftOver.c
@@ -215,43 +215,43 @@
 char *end = cgiOptionalString(argEnd);
 
 if (isEmpty(fromGenome) || isEmpty(toGenome) || isEmpty(chrom) || isEmpty(start) || isEmpty(end))
     apiErrAbort(err400, err400Msg, "must have all arguments: %s, %s, %s, %s, %s  for endpoint '/liftOver", argFromGenome, argToGenome, argChrom, argStart, argEnd);
 
 unsigned uStart = 0;
 unsigned uEnd = 0;
 uStart = sqlUnsigned(start);
 uEnd = sqlUnsigned(end);
 if (uEnd < uStart)
     apiErrAbort(err400, err400Msg, "given start coordinate %u is greater than given end coordinate", uStart, uEnd);
 
 struct dbDb *fromDb = hDbDb(fromGenome);
 if (fromDb == NULL)
     {
-    fromDb = genarkLiftOverDbs(fromGenome);
+    fromDb = genarkLiftOverDb(fromGenome);
     }
 if (fromDb == NULL)
     apiErrAbort(err400, err400Msg, "can not find 'fromGenome=%s' for endpoint '/liftOver", fromGenome);
 struct dbDb *toDb = hDbDb(toGenome);
 if (toDb == NULL)
     {
-    toDb = genarkLiftOverDbs(toGenome);
+    toDb = genarkLiftOverDb(toGenome);
     }
 if (toDb == NULL)
     apiErrAbort(err400, err400Msg, "can not find 'toGenome=%s' for endpoint '/liftOver", toGenome);
 
 char *fileName = liftOverChainFile(fromDb->name, toDb->name);
 if (isEmpty(fileName))
     apiErrAbort(err400, err400Msg, "Unable to find a chain file from %s to %s - please contact support", fromGenome, toGenome);
 fileName = hReplaceGbdbMustDownload(fileName);
 char fromPos[4096];
 safef(fromPos, sizeof(fromPos), "%s:%u-%u", chrom, uStart, uEnd);
 char *nChrom;
 int nStart, nEnd;
-if (!hgParseChromRange(fromDb->name, fromPos, &nChrom, &nStart, &nEnd))
+if (!hgParseChromRange(NULL, fromPos, &nChrom, &nStart, &nEnd))
     apiErrAbort(err400, err400Msg, "position %s is not in chrom:start-end format", fromPos);
 int origSize = nEnd - nStart;
 struct chain *chainList = chainLoadAndTrimIntersecting(fileName, nChrom, nStart, nEnd);
 if (chainList == NULL)
     apiErrAbort(err400, err400Msg, "Sorry, this position %s is not found in the %s assembly", fromPos, toGenome);
 chainListOut(fromGenome, toGenome, origSize, fromPos, chainList);
 }