From 0a242ba49f4f8bfaf2a1f79441b426277e03ba0a Mon Sep 17 00:00:00 2001 From: sergei Date: Mon, 18 May 2009 20:33:43 +0000 Subject: [PATCH] dom.pp: Ignore node read-only property when its owning document is being destroyed (enables destroying nodes in arbitrary order). git-svn-id: trunk@13175 - --- packages/fcl-xml/src/dom.pp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/fcl-xml/src/dom.pp b/packages/fcl-xml/src/dom.pp index c2465e03d7..3599fbf3c7 100644 --- a/packages/fcl-xml/src/dom.pp +++ b/packages/fcl-xml/src/dom.pp @@ -180,7 +180,8 @@ type nfRecycled, nfLevel2, nfIgnorableWS, - nfSpecified + nfSpecified, + nfDestroying ); TNodeFlags = set of TNodeFlagEnum; @@ -1002,7 +1003,7 @@ end; procedure TDOMNode.Changing; begin - if nfReadOnly in FFlags then + if (nfReadOnly in FFlags) and not (nfDestroying in FOwnerDocument.FFlags) then raise EDOMError.Create(NO_MODIFICATION_ALLOWED_ERR, 'Node.CheckReadOnly'); end; @@ -1755,6 +1756,7 @@ end; destructor TDOMDocument.Destroy; begin + Include(FFlags, nfDestroying); FreeAndNil(FIDList); // set to nil before starting destroying children FEmptyNode.Free; inherited Destroy;