80265657aadfc44b510d03b44d8858cae0dfbda7
hiram
  Sun Jun 26 16:26:24 2022 -0700
can use the largest integer for the maximum chrom size for chrom sizes up to 2^31 - 1 no redmine

diff --git src/hg/lib/chromBins.c src/hg/lib/chromBins.c
index c27fb73..74ebab8 100644
--- src/hg/lib/chromBins.c
+++ src/hg/lib/chromBins.c
@@ -1,98 +1,95 @@
 /* chromBins - object for storing per-chrom binKeeper objects */
 
 /* Copyright (C) 2014 The Regents of the University of California 
  * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
+#include <limits.h>
 #include "common.h"
 #include "chromBins.h"
 #include "binRange.h"
 #include "hash.h"
 
-
-/* Sized hold a very larger chromosome. */
-static const int MAX_CHROM_SIZE = 1000000000;
-
 struct chromBins *chromBinsNew(chromBinsFreeFunc *freeFunc)
 /* create a new chromBins object */
 {
 struct chromBins *chromBins;
 AllocVar(chromBins);
 chromBins->freeFunc = freeFunc;
 chromBins->chromTbl = hashNew(19); /* handle scaffolds too */
 return chromBins;
 }
 
 static void freeChrom(struct chromBins *chromBins, struct binKeeper *chromBk)
 /* free a chrom's binRange and optional  entries */
 {
 if (chromBins->freeFunc != NULL)
     {
     struct binKeeperCookie cookie = binKeeperFirst(chromBk);
     struct binElement* be;
     while ((be = binKeeperNext(&cookie)) != NULL)
         (*chromBins->freeFunc)(&be->val);
     }
 binKeeperFree(&chromBk);
 }
 
 void chromBinsFree(struct chromBins **chromBinsPtr)
 /* free chromBins object, calling freeFunc on each entry if it was specified */
 {
 struct chromBins *chromBins = *chromBinsPtr;
 if (chromBins != NULL)
     {
     struct hashCookie cookie = hashFirst(chromBins->chromTbl);
     struct hashEl* hel;
     while ((hel = hashNext(&cookie)) != NULL)
         freeChrom(chromBins, hel->val);
     hashFree(&chromBins->chromTbl);
     freeMem(chromBins);
     *chromBinsPtr = NULL;
     }
 }
 
 struct slName *chromBinsGetChroms(struct chromBins *chromBins)
 /* get list of chromosome names in the object.  Result should
  * be freed with slFreeList() */
 {
 struct slName *chroms = NULL;
 struct hashCookie cookie = hashFirst(chromBins->chromTbl);
 struct hashEl* hel;
 while ((hel = hashNext(&cookie)) != NULL)
     slSafeAddHead(&chroms, slNameNew(hel->name));
 return chroms;
 }
 
 struct binKeeper *chromBinsGet(struct chromBins* chromBins, char *chrom,
                                boolean create)
 /* get chromosome binKeeper, optionally creating if it doesn't exist */
 {
 if (create)
     {
     struct hashEl *hel = hashStore(chromBins->chromTbl, chrom);
     if (hel->val == NULL)
-        hel->val = binKeeperNew(0, MAX_CHROM_SIZE);
+        hel->val = binKeeperNew(0, INT_MAX);
     return (struct binKeeper*)hel->val;
     }
 else
     return (struct binKeeper*)hashFindVal(chromBins->chromTbl, chrom);
 }
 
 void chromBinsAdd(struct chromBins *chromBins, char *chrom, int start, int end,
                   void *obj)
 /* add an object to a by chrom binKeeper hash */
 {
 struct binKeeper *bins = chromBinsGet(chromBins, chrom, TRUE);
 binKeeperAdd(bins, start, end, obj);
 }
 
 
 struct binElement *chromBinsFind(struct chromBins *chromBins, char *chrom,
                                  int start, int end)
 /* get list of overlaping objects in a by chrom binRange hash */
 {
 struct binKeeper *bins = chromBinsGet(chromBins, chrom, FALSE);
 if (bins != NULL)
     return binKeeperFind(bins, start, end);
 else
     return NULL;
 }