summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-10-01 11:05:30 +0000
committersergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-10-01 11:05:30 +0000
commit3dcd3d39ec34a0804d11e8e8c55ea152763384a7 (patch)
tree4ba746c735fea556339736e14003762aed6baa11
parent40be743b1a1cd64bc44aa964ada165f165f8c324 (diff)
downloadfpc-3dcd3d39ec34a0804d11e8e8c55ea152763384a7.tar.gz
* dom.pp, fixed TDOMText.SplitText() to use custom allocation, so newly created node won't leak if initial node has no parent .
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16072 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/fcl-xml/src/dom.pp8
1 files changed, 5 insertions, 3 deletions
diff --git a/packages/fcl-xml/src/dom.pp b/packages/fcl-xml/src/dom.pp
index ca02cec40c..2414075022 100644
--- a/packages/fcl-xml/src/dom.pp
+++ b/packages/fcl-xml/src/dom.pp
@@ -3087,13 +3087,15 @@ begin
end;
function TDOMText.SplitText(offset: LongWord): TDOMText;
+var
+ L: LongWord;
begin
Changing;
- if offset > Length then
+ L := Length;
+ if offset > L then
raise EDOMIndexSize.Create('Text.SplitText');
- Result := TDOMText.Create(FOwnerDocument);
- Result.FNodeValue := Copy(FNodeValue, offset + 1, Length);
+ Result := FOwnerDocument.CreateTextNodeBuf(@FNodeValue[offset+1], L-offset, False);
Result.FFlags := FFlags * [nfIgnorableWS];
FNodeValue := Copy(FNodeValue, 1, offset);
if Assigned(FParentNode) then