const Byte *buf = p->buf;
UInt32 range = p->range;
UInt32 code = p->code;
-
- WATCHDOG_RESET();
+ unsigned int loop = 0;
do
{
unsigned ttt;
unsigned posState = processedPos & pbMask;
+ if (!(loop++ & 1023))
+ schedule();
+
prob = probs + IsMatch + (state << kNumPosBitsMax) + posState;
IF_BIT_0(prob)
{
state -= (state < 4) ? state : 3;
symbol = 1;
- WATCHDOG_RESET();
-
do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100);
}
else
state -= (state < 10) ? 3 : 6;
symbol = 1;
- WATCHDOG_RESET();
-
do
{
unsigned bit;
UInt32 mask = 1;
unsigned i = 1;
- WATCHDOG_RESET();
-
do
{
GET_BIT2(prob + i, i, ; , distance |= mask);
{
numDirectBits -= kNumAlignBits;
- WATCHDOG_RESET();
-
do
{
NORMALIZE
const Byte *lim = dest + curLen;
dicPos += curLen;
- WATCHDOG_RESET();
-
do
*(dest) = (Byte)*(dest + src);
while (++dest != lim);
else
{
- WATCHDOG_RESET();
-
do
{
dic[dicPos++] = dic[pos];
}
while (dicPos < limit && buf < bufLimit);
- WATCHDOG_RESET();
+ schedule();
NORMALIZE;
p->buf = buf;