关于C++类库KYLib: 固定缓冲区的压缩/解压缩类源码(八)

2014-11-24 08:13:32 · 作者: · 浏览: 7
break;
}
else
{
pLast = pDest + wDepth + 3;
pMatch = pDest - wOffset;
for (; pDest < pLast; pDest++, pMatch++)
*pDest = *pMatch;
}
}
else if (pDest < pDestEnd)
{
BufferToChar(pPos, byteBegin, charValue);
*(pDest++) = charValue;
}
else
{
boolOver = true;
break;
}
}
// 检查最后一个字节
if (!boolOver && !boolError && (pPos < pBuffEnd) && (byteBegin <= 1))
{
// 取匹配标志
BufferToBool(pPos, byteBegin, boolMatched);
// 必须是匹配项
if (boolMatched && BufferToOffset(pPos, pBuffEnd, byteBegin, wOffset)
&& (wOffset != 0) && (wOffset <= pDest - ADest)
&& BufferToDepth(pPos, pBuffEnd, byteBegin, wDepth))
{
if (pDest + wDepth + 3 > pDestEnd)
boolOver = true;
else
{
pLast = pDest + wDepth + 3;
pMatch = pDest - wOffset;
for (; pDest < pLast; pDest++, pMatch++)
*pDest = *pMatch;
}
}
}
// 判断是否溢出
if (boolOver)
result = 0;
else if (!boolError)
result = pDest - ADest;
}
catch (...) {}
// 返回结果
return result;
}
}