This is due to checking for equality instead of just greater than in darr->used against darr->available.