private bool checkDirOffset(uint diroff)
{
if (diroff == 0)
{
// no more directories
return false;
}
for (short n = 0; n < m_dirnumber && m_dirlist != null; n++)
{
if (m_dirlist[n] == diroff)
return false;
}
m_dirnumber++;
if (m_dirnumber > m_dirlistsize)
{
// XXX: Reduce memory allocation granularity of the dirlist array.
uint[] new_dirlist = Realloc(m_dirlist, m_dirnumber - 1, 2 * m_dirnumber);
m_dirlistsize = 2 * m_dirnumber;
m_dirlist = new_dirlist;
}
m_dirlist[m_dirnumber - 1] = diroff;
return true;
}