summaryrefslogtreecommitdiff
path: root/packages/fcl-registry/src/xmlreg.pp
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
commit160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch)
treeb791a95695a7cf674e61a6153139c6f9c6c491fa /packages/fcl-registry/src/xmlreg.pp
parent3843727e74b31bbf2a34e7e3b89ee422269f770e (diff)
parent413a6aa6469e6c297780217a27ca91363c637944 (diff)
downloadfpc-avr.tar.gz
* rebase to trunk@17295avr
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/avr@17296 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-registry/src/xmlreg.pp')
-rw-r--r--packages/fcl-registry/src/xmlreg.pp34
1 files changed, 18 insertions, 16 deletions
diff --git a/packages/fcl-registry/src/xmlreg.pp b/packages/fcl-registry/src/xmlreg.pp
index ef0274340b..1fca47aae2 100644
--- a/packages/fcl-registry/src/xmlreg.pp
+++ b/packages/fcl-registry/src/xmlreg.pp
@@ -352,22 +352,24 @@ begin
begin
Node[SType]:=IntToStr(Ord(DataType));
DataNode:=Node.FirstChild;
- Result:=DataNode<>Nil; // Bug 9879. Create child here?
- If Result Then
- begin
- Case DataType of
- dtDWORD : DataNode.NodeValue:=IntToStr(PCardinal(@Data)^);
- dtString : begin
- SetLength(S,DataSize);
- If (DataSize>0) then
- Move(Data,S[1],DataSize);
- DataNode.NodeValue:=S;
- end;
- dtBinary : begin
- S:=BufToHex(Data,DataSize);
- DataNode.NodeValue:=S;
- end;
- end;
+ // Reading <value></value> results in <value/>, i.e. no subkey exists any more. Create textnode.
+ if (DataNode=nil) then
+ begin
+ DataNode:=FDocument.CreateTextNode('');
+ Node.AppendChild(DataNode);
+ end;
+ Case DataType of
+ dtDWORD : DataNode.NodeValue:=IntToStr(PCardinal(@Data)^);
+ dtString : begin
+ SetLength(S,DataSize);
+ If (DataSize>0) then
+ Move(Data,S[1],DataSize);
+ DataNode.NodeValue:=S;
+ end;
+ dtBinary : begin
+ S:=BufToHex(Data,DataSize);
+ DataNode.NodeValue:=S;
+ end;
end;
end;
If Result then