private int ResizeInfo()
{
int nextentry = 0;
int newpos = 0;
int curde;
int hsize;
while (nextentry < seinfo.Count)
{
curde = seinfo[nextentry].backsepos;
hsize = seinfo[nextentry].hashsize;
if ((curde != DM_DENTRY_FIRST) && (curde >= dentry.Count))
{
return -1;
}
if (((curde == DM_DENTRY_FIRST) && (entrance != nextentry))
|| ((curde != DM_DENTRY_FIRST) && (dentry[curde].suffix_pos != nextentry)))
{
nextentry++;
}
else
{
if (nextentry != newpos)
{
seinfo[newpos] = seinfo[nextentry];
if (curde != DM_DENTRY_FIRST)
{
dentry[curde].suffix_pos = newpos;
}
else
{
entrance = newpos;
}
}
nextentry ++;
newpos ++;
}
}
seinfo.RemoveRange(newpos, seinfo.Count - newpos);
if (seinfo.Count > sebufsize / 2)
{
sebufsize *= 2;
}
return 1;
}