どうもコメント・CDATAセクションが考慮されていないようですね。
skipTagEnd()で「'」,「"」が属性の始まりと認識されて、属性が閉じるまで、
つまりHTMLの一番最後まで読みこんでしまうようです。
L.719- [ hi_unit/strunit.pas ]
if p^ = '''' then
begin
Inc(p); skipToChar('''', p); // <- 「'」が見つかるまで進む
end else
CDATAセクションをきちんとエスケープする処理を作る必要がありそうですね。
優先度を上げておきます。