Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
99e3873f
Commit
99e3873f
authored
Nov 06, 2010
by
Nikolay Sivov
Committed by
Alexandre Julliard
Nov 09, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msxml3: Fix duplicated declarations after document ::get_xml().
parent
1d0f126d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
2 deletions
+99
-2
domdoc.c
dlls/msxml3/domdoc.c
+49
-1
msxml_private.h
dlls/msxml3/msxml_private.h
+2
-0
node.c
dlls/msxml3/node.c
+1
-1
domdoc.c
dlls/msxml3/tests/domdoc.c
+46
-0
saxreader.c
dlls/msxml3/tests/saxreader.c
+1
-0
No files found.
dlls/msxml3/domdoc.c
View file @
99e3873f
...
...
@@ -301,6 +301,11 @@ static void free_properties(domdoc_properties* properties)
}
}
static
BOOL
xmldoc_has_decl
(
xmlDocPtr
doc
)
{
return
doc
->
children
&&
(
xmlStrEqual
(
doc
->
children
->
name
,
(
xmlChar
*
)
"xml"
)
==
1
);
}
/* links a "<?xml" node as a first child */
void
xmldoc_link_xmldecl
(
xmlDocPtr
doc
,
xmlNodePtr
node
)
{
...
...
@@ -1282,10 +1287,53 @@ static HRESULT WINAPI domdoc_get_xml(
BSTR
*
p
)
{
domdoc
*
This
=
impl_from_IXMLDOMDocument3
(
iface
);
xmlSaveCtxtPtr
ctxt
;
xmlBufferPtr
buf
;
int
options
;
long
ret
;
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
node_get_xml
(
&
This
->
node
,
TRUE
,
TRUE
,
p
);
if
(
!
p
)
return
E_INVALIDARG
;
*
p
=
NULL
;
buf
=
xmlBufferCreate
();
if
(
!
buf
)
return
E_OUTOFMEMORY
;
options
=
xmldoc_has_decl
(
get_doc
(
This
))
?
XML_SAVE_NO_DECL
:
0
;
options
|=
XML_SAVE_FORMAT
;
ctxt
=
xmlSaveToBuffer
(
buf
,
"UTF-8"
,
options
);
if
(
!
ctxt
)
{
xmlBufferFree
(
buf
);
return
E_OUTOFMEMORY
;
}
ret
=
xmlSaveDoc
(
ctxt
,
get_doc
(
This
));
/* flushes on close */
xmlSaveClose
(
ctxt
);
TRACE
(
"%ld, len=%d
\n
"
,
ret
,
xmlBufferLength
(
buf
));
if
(
ret
!=
-
1
&&
xmlBufferLength
(
buf
)
>
0
)
{
BSTR
content
;
content
=
bstr_from_xmlChar
(
xmlBufferContent
(
buf
));
content
=
EnsureCorrectEOL
(
content
);
*
p
=
content
;
}
else
{
*
p
=
SysAllocStringLen
(
NULL
,
0
);
}
xmlBufferFree
(
buf
);
return
*
p
?
S_OK
:
E_OUTOFMEMORY
;
}
...
...
dlls/msxml3/msxml_private.h
View file @
99e3873f
...
...
@@ -204,6 +204,8 @@ extern HRESULT node_get_base_name(xmlnode*,BSTR*);
extern
HRESULT
DOMDocument_create_from_xmldoc
(
xmlDocPtr
xmldoc
,
IXMLDOMDocument3
**
document
);
extern
HRESULT
SchemaCache_validate_tree
(
IXMLDOMSchemaCollection2
*
iface
,
xmlNodePtr
tree
);
extern
BSTR
EnsureCorrectEOL
(
BSTR
);
static
inline
BSTR
bstr_from_xmlChar
(
const
xmlChar
*
str
)
{
BSTR
ret
=
NULL
;
...
...
dlls/msxml3/node.c
View file @
99e3873f
...
...
@@ -951,7 +951,7 @@ static HRESULT WINAPI xmlnode_put_dataType(
return
hr
;
}
static
BSTR
EnsureCorrectEOL
(
BSTR
sInput
)
BSTR
EnsureCorrectEOL
(
BSTR
sInput
)
{
int
nNum
=
0
;
BSTR
sNew
;
...
...
dlls/msxml3/tests/domdoc.c
View file @
99e3873f
...
...
@@ -7544,6 +7544,51 @@ static void test_put_nodeTypedValue(void)
free_bstrs
();
}
static
void
test_get_xml
(
void
)
{
static
const
char
xmlA
[]
=
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-16
\"
?>
\r\n
<a>test</a>
\r\n
"
;
IXMLDOMProcessingInstruction
*
pi
;
IXMLDOMNode
*
first
;
IXMLDOMDocument
*
doc
;
VARIANT_BOOL
b
;
VARIANT
v
;
BSTR
xml
;
HRESULT
hr
;
doc
=
create_document
(
&
IID_IXMLDOMDocument
);
if
(
!
doc
)
return
;
b
=
VARIANT_TRUE
;
hr
=
IXMLDOMDocument_loadXML
(
doc
,
_bstr_
(
"<a>test</a>"
),
&
b
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
b
==
VARIANT_TRUE
,
"got %d
\n
"
,
b
);
hr
=
IXMLDOMDocument_createProcessingInstruction
(
doc
,
_bstr_
(
"xml"
),
_bstr_
(
"version=
\"
1.0
\"
encoding=
\"
UTF-16
\"
"
),
&
pi
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IXMLDOMDocument_get_firstChild
(
doc
,
&
first
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
V_UNKNOWN
(
&
v
)
=
(
IUnknown
*
)
first
;
V_VT
(
&
v
)
=
VT_UNKNOWN
;
hr
=
IXMLDOMDocument_insertBefore
(
doc
,
(
IXMLDOMNode
*
)
pi
,
v
,
NULL
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
IXMLDOMProcessingInstruction_Release
(
pi
);
IXMLDOMNode_Release
(
first
);
hr
=
IXMLDOMDocument_get_xml
(
doc
,
&
xml
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
memcmp
(
xml
,
_bstr_
(
xmlA
),
sizeof
(
xmlA
)
*
sizeof
(
WCHAR
))
==
0
,
"got %s, expected %s
\n
"
,
wine_dbgstr_w
(
xml
),
xmlA
);
SysFreeString
(
xml
);
IXMLDOMDocument_Release
(
doc
);
}
START_TEST
(
domdoc
)
{
IXMLDOMDocument
*
doc
;
...
...
@@ -7607,6 +7652,7 @@ START_TEST(domdoc)
test_events
();
test_createProcessingInstruction
();
test_put_nodeTypedValue
();
test_get_xml
();
CoUninitialize
();
}
dlls/msxml3/tests/saxreader.c
View file @
99e3873f
...
...
@@ -584,6 +584,7 @@ static void test_saxreader(void)
}
bstrData
=
SysAllocString
(
szSimpleXML
);
hr
=
IXMLDOMDocument_loadXML
(
domDocument
,
bstrData
,
&
vBool
);
ok
(
hr
==
S_OK
,
"Expected S_OK, got %08x
\n
"
,
hr
);
V_VT
(
&
var
)
=
VT_UNKNOWN
;
V_UNKNOWN
(
&
var
)
=
(
IUnknown
*
)
domDocument
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment