[ntdll] Move search for assemblyIdentity element

Roman Mindalev lists at r000n.net
Fri Mar 13 12:16:35 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


--------------010405060704060903040903--



More information about the wine-patches mailing list