Index = (UINT16) (Len - TableBits);\r
\r
while (Index != 0) {\r
- if (*Pointer == 0) {\r
+ if (*Pointer == 0 && Avail < (2 * NC - 1)) {\r
Sd->mRight[Avail] = Sd->mLeft[Avail] = 0;\r
*Pointer = Avail++;\r
}\r
//\r
if (Index == Special) {\r
CharC = (UINT16) GetBits (Sd, 2);\r
- while ((INT16) (--CharC) >= 0) {\r
+ while ((INT16) (--CharC) >= 0 && Index < NPT) {\r
Sd->mPTLen[Index++] = 0;\r
}\r
}\r
CharC = (UINT16) (GetBits (Sd, CBIT) + 20);\r
}\r
\r
- while ((INT16) (--CharC) >= 0) {\r
+ while ((INT16) (--CharC) >= 0 && Index < NC) {\r
Sd->mCLen[Index++] = 0;\r
}\r
\r