【问题描述】
该问题是由于 TQStringCatHelperW.Cat 函数在连接字符串时,计算需要的内存缓冲区大小不正确,可能造成构造较长的结果字符串时结果不正确,甚至可能出现 Access Volition 错误。问题发生在下面两个函数:
function TQStringCatHelperW.Cat(p: PQCharW; len: Integer): TQStringCatHelperW; function TQStringCatHelperW.Cat(c: QCharW): TQStringCatHelperW;
两个函数中判断长度用的是 IntPtr(FDest)-IntPtr(FStart)>=FSize ,实际应为 Postion >= FSize。
【严重级别】
高
【更新级别】
建议
【特别感谢】
etarelecca 报告