diff options
| author | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-10-01 11:05:30 +0000 |
|---|---|---|
| committer | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-10-01 11:05:30 +0000 |
| commit | 3dcd3d39ec34a0804d11e8e8c55ea152763384a7 (patch) | |
| tree | 4ba746c735fea556339736e14003762aed6baa11 /packages/fcl-xml | |
| parent | 40be743b1a1cd64bc44aa964ada165f165f8c324 (diff) | |
| download | fpc-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
Diffstat (limited to 'packages/fcl-xml')
| -rw-r--r-- | packages/fcl-xml/src/dom.pp | 8 |
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 |
