* appdomain.c: Revert extra patches, just wanted to bump the
authorJackson Harper <jackson@novell.com>
Wed, 7 Apr 2004 16:42:25 +0000 (16:42 -0000)
committerJackson Harper <jackson@novell.com>
Wed, 7 Apr 2004 16:42:25 +0000 (16:42 -0000)
version number.

svn path=/trunk/mono/; revision=25162

mono/metadata/ChangeLog
mono/metadata/appdomain.c

index eb5c3e887df40236e1af95f0d72539cf211e4af6..22c3eba29f70a3e99709004f4dce174f295afd7e 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-07  Jackson Harper  <jackson@ximian.com>
+
+       * appdomain.c: Revert extra patches, just wanted to bump the
+       version number.
+       
 2004-04-07  Jackson Harper  <jackson@ximian.com>
 
        * Makefile.am: Add culture-info private headers.
index dc78de3b3b993d0271096210192d4d57b63fbdd7..131622a0468241593554751b1e2b2e7dca0ecef4 100644 (file)
@@ -751,7 +751,6 @@ free_assembly_name (MonoAssemblyName *aname)
        g_free ((void *) aname->name);
        g_free ((void *) aname->culture);
        g_free ((void *) aname->hash_value);
-       g_free ((void *) aname->public_tok_value);
 }
 
 static gboolean
@@ -810,10 +809,49 @@ get_info_from_assembly_name (MonoString *assRef, MonoAssemblyName *aname)
                        tmp++;
                        value += 15;
                        if (*value && strcmp (value, "null")) {
-                                gchar *t = g_strdup (value);
-                                g_strchug (t);
-                               aname->public_tok_value = g_strdup (g_strchomp (t));
-                                g_free (t);
+                               gint i, len;
+                               gchar h, l;
+                               gchar *result;
+                               
+                               value = g_strstrip (g_strdup (value));
+                               len = strlen (value);
+                               if (len % 2) {
+                                       g_free (value);
+                                       g_strfreev (parts);
+                                       return FALSE;
+                               }
+                               
+                               aname->hash_len = len / 2;
+                               aname->hash_value = g_malloc0 (aname->hash_len);
+                               result = (gchar *) aname->hash_value;
+                               
+                               for (i = 0; i < len; i++) {
+                                       if (i % 2) {
+                                               l = g_ascii_xdigit_value (value [i]);
+                                               if (l == -1) {
+                                                       g_free (value);
+                                                       g_strfreev (parts);
+                                                       return FALSE;
+                                               }
+                                               result [i / 2] = (h * 16) + l;
+                                       } else {
+                                               h = g_ascii_xdigit_value (value [i]);
+                                               if (h == -1) {
+                                                       g_free (value);
+                                                       g_strfreev (parts);
+                                                       return FALSE;
+                                               }
+                                       }
+                               }
+                               g_free (value);
+
+                               /*
+                               g_print ("PublicKeyToken: ");
+                               for (i = 0; i < aname->hash_len; i++) {
+                                       g_print ("%x", 0x00FF & aname->hash_value [i]); 
+                               }
+                               g_print ("\n");
+                               */
                        }
                }
        }