3b17f266c9ecbd8324bf8da02d7a5b650899150d braney Thu Nov 13 14:28:37 2014 -0800 fix variable size problem #14373 diff --git src/lib/bPlusTree.c src/lib/bPlusTree.c index 6b09e15..6713639 100644 --- src/lib/bPlusTree.c +++ src/lib/bPlusTree.c @@ -487,42 +487,42 @@ mustWrite(f, keyBuf, keySize); writeOne(f, nextChild); nextChild += bytesInNextLevelBlock; ++slotsUsed; } assert(slotsUsed == shortCountOne); /* Write out empty slots as all zero. */ int slotSize = keySize + sizeof(bits64); for (j=countOne; j<blockSize; ++j) repeatCharOut(f, 0, slotSize); } return endLevel; } -static void writeLeafLevel(bits16 blockSize, void *itemArray, int itemSize, int itemCount, +static void writeLeafLevel(bits16 blockSize, void *itemArray, int itemSize, bits64 itemCount, void (*fetchKey)(const void *va, char *keyBuf), bits32 keySize, void* (*fetchVal)(const void *va), bits32 valSize, FILE *f) /* Write out leaf level blocks. */ { char *items = itemArray; -int i,j; +bits64 i,j; UBYTE isLeaf = TRUE; UBYTE reserved = 0; bits16 countOne; -int countLeft = itemCount; +bits64 countLeft = itemCount; char keyBuf[keySize+1]; keyBuf[keySize] = 0; for (i=0; i<itemCount; i += countOne) { /* Write block header */ if (countLeft > blockSize) countOne = blockSize; else countOne = countLeft; writeOne(f, isLeaf); writeOne(f, reserved); writeOne(f, countOne); /* Write out position in genome and in file for each item. */ for (j=0; j<countOne; ++j)