[ntdll] Move search for assemblyIdentity element
Roman Mindalev
lists at r000n.net
Wed Mar 11 14:09:47 CDT 2009
Function for manifest parsing tried search for assemblyIdentity element
only if it placed in begin of a manifest. Now it will be more accurate
and wait for it in entire one
---
dlls/ntdll/actctx.c | 60 ++++++++++++++++++++++++--------------------------
1 files changed, 29 insertions(+), 31 deletions(-)
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index f864033..9ca8f35 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -1390,37 +1390,6 @@ static BOOL parse_assembly_elem(xmlbuf_t* xmlbuf, struct actctx_loader* acl,
assembly->no_inherit)
return FALSE;
- if (xmlstr_cmp(&elem, assemblyIdentityW))
- {
- if (!parse_assembly_identity_elem(xmlbuf, acl->actctx, &assembly->id)) return FALSE;
- ret = next_xml_elem(xmlbuf, &elem);
-
- if (expected_ai)
- {
- /* FIXME: more tests */
- if (assembly->type == ASSEMBLY_MANIFEST &&
- memcmp(&assembly->id.version, &expected_ai->version, sizeof(assembly->id.version)))
- {
- FIXME("wrong version for assembly manifest: %u.%u.%u.%u / %u.%u.%u.%u\n",
- expected_ai->version.major, expected_ai->version.minor,
- expected_ai->version.build, expected_ai->version.revision,
- assembly->id.version.major, assembly->id.version.minor,
- assembly->id.version.build, assembly->id.version.revision);
- return FALSE;
- }
- else if (assembly->type == ASSEMBLY_SHARED_MANIFEST &&
- (assembly->id.version.major != expected_ai->version.major ||
- assembly->id.version.minor != expected_ai->version.minor ||
- assembly->id.version.build < expected_ai->version.build ||
- (assembly->id.version.build == expected_ai->version.build &&
- assembly->id.version.revision < expected_ai->version.revision)))
- {
- FIXME("wrong version for shared assembly manifest\n");
- return FALSE;
- }
- }
- }
-
while (ret)
{
if (xmlstr_cmp_end(&elem, assemblyW))
@@ -1452,6 +1421,35 @@ static BOOL parse_assembly_elem(xmlbuf_t* xmlbuf, struct actctx_loader* acl,
{
ret = parse_clr_surrogate_elem(xmlbuf, assembly);
}
+ else if (xmlstr_cmp(&elem, assemblyIdentityW))
+ {
+ if (!parse_assembly_identity_elem(xmlbuf, acl->actctx, &assembly->id)) return FALSE;
+
+ if (expected_ai)
+ {
+ /* FIXME: more tests */
+ if (assembly->type == ASSEMBLY_MANIFEST &&
+ memcmp(&assembly->id.version, &expected_ai->version, sizeof(assembly->id.version)))
+ {
+ FIXME("wrong version for assembly manifest: %u.%u.%u.%u / %u.%u.%u.%u\n",
+ expected_ai->version.major, expected_ai->version.minor,
+ expected_ai->version.build, expected_ai->version.revision,
+ assembly->id.version.major, assembly->id.version.minor,
+ assembly->id.version.build, assembly->id.version.revision);
+ ret = FALSE;
+ }
+ else if (assembly->type == ASSEMBLY_SHARED_MANIFEST &&
+ (assembly->id.version.major != expected_ai->version.major ||
+ assembly->id.version.minor != expected_ai->version.minor ||
+ assembly->id.version.build < expected_ai->version.build ||
+ (assembly->id.version.build == expected_ai->version.build &&
+ assembly->id.version.revision < expected_ai->version.revision)))
+ {
+ FIXME("wrong version for shared assembly manifest\n");
+ ret = FALSE;
+ }
+ }
+ }
else
{
WARN("unknown element %s\n", debugstr_xmlstr(&elem));
--
1.6.2
--------------090509050001000609040504
Content-Type: text/x-patch;
name="0004--ntdll-lookup_assembly-function-should-returns-STAT.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename*0="0004--ntdll-lookup_assembly-function-should-returns-STAT.pat";
filename*1="ch"
More information about the wine-devel
mailing list