[Bug] Delphi System.Net.HttpClient.Win 单元的一处Bug

[问题函数]
System.Net.HttpClient.Win.ReadHeader
[影响版本]
自有这个单元开始到10.4,包括打完最新的 patch3。
[问题描述]
WinHttpQueryHeaders 返回 LSize 如果等于 2,则 SetLength 得到的结果是将 Result 设置对应的字符串缓冲区被设置为了空指针,从而引发问题。
[解决方法]
1、SetLength 正常调用,但检查 LSize 是否大于2,大于2时不实际二次查询。推荐这种解决办法。
2、创建一个临时的 TBytes 类型的变量,然后按正常程序走,最后拷贝相关内容到返回值中(实际上这种情况下,一般是空字符串时返回这种)。

分享到: