Commit 42fd7e8f authored by unknown's avatar unknown
Browse files

ndb - bug#20892

  Fix bug in tup buddy allocator, which made it make invalid access to cfreepagelist[16] (which is not defined)


ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp:
  loop from firstListToCheck -1 (as firstListToCheck has already been checked), when looking for less than requested pages
  add if-statement for firtListToCheck == 0
parent 753651c1
Loading
Loading
Loading
Loading
+17 −13
Original line number Diff line number Diff line
@@ -184,7 +184,10 @@ void Dbtup::allocConsPages(Uint32 noOfPagesToAllocate,
/*       PROPER AMOUNT OF PAGES WERE NOT FOUND. FIND AS MUCH AS     */
/*       POSSIBLE.                                                  */
/* ---------------------------------------------------------------- */
  for (Uint32 j = firstListToCheck; (Uint32)~j; j--) {
  if (firstListToCheck)
  {
    ljam();
    for (Uint32 j = firstListToCheck - 1; (Uint32)~j; j--) {
      ljam();
      if (cfreepageList[j] != RNIL) {
	ljam();
@@ -202,6 +205,7 @@ void Dbtup::allocConsPages(Uint32 noOfPagesToAllocate,
	return;
      }//if
    }//for
  }
/* ---------------------------------------------------------------- */
/*       NO FREE AREA AT ALL EXISTED. RETURN ZERO PAGES             */
/* ---------------------------------------------------------------- */