+++ /dev/null
-diff -urNad mono-1.2.4~/mono/metadata/loader.c mono-1.2.4/mono/metadata/loader.c
---- mono-1.2.4~/mono/metadata/loader.c 2007-04-25 20:48:41.000000000 +0200
-+++ mono-1.2.4/mono/metadata/loader.c 2007-07-21 16:02:11.000000000 +0200
-@@ -1551,17 +1551,11 @@
- g_free ((char*)method->name);
- if (mw->method.header)
- g_free ((char*)mw->method.header->code);
-+ g_free (mw->method.header);
- g_free (mw->method_data);
-- }
--
-- if (method->dynamic && !(method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) && ((MonoMethodNormal *)method)->header) {
-- /* FIXME: Ditto */
-- /* mono_metadata_free_mh (((MonoMethodNormal *)method)->header); */
-- g_free (((MonoMethodNormal*)method)->header);
-- }
--
-- if (method->dynamic)
-+ g_free (method->signature);
- g_free (method);
-+ }
- }
-
- void
-diff -urNad mono-1.2.4~/mono/metadata/marshal.c mono-1.2.4/mono/metadata/marshal.c
---- mono-1.2.4~/mono/metadata/marshal.c 2007-05-01 00:49:22.000000000 +0200
-+++ mono-1.2.4/mono/metadata/marshal.c 2007-07-21 16:02:11.000000000 +0200
-@@ -8765,7 +8765,11 @@
-
-
- /* we copy the signature, so that we can modify it */
-- csig = signature_dup (method->klass->image, sig);
-+ if (this)
-+ /* Need to free this later */
-+ csig = mono_metadata_signature_dup (sig);
-+ else
-+ csig = signature_dup (method->klass->image, sig);
- csig->hasthis = 0;
- csig->pinvoke = 1;
-
+++ /dev/null
---- mono/mono/mini/mini-ppc.c (Revision 81412)
-+++ mono/mono/mini/mini-ppc.c (Revision 81413)
-@@ -2560,8 +2560,12 @@
- ppc_rlwinm (code, ppc_r11, ppc_r11, 0, 0, 27);
- /* use ctr to store the number of words to 0 if needed */
- if (ins->flags & MONO_INST_INIT) {
-- /* we zero 4 bytes at a time */
-- ppc_addi (code, ppc_r0, ins->sreg1, 3);
-+ /* we zero 4 bytes at a time:
-+ * we add 7 instead of 3 so that we set the counter to
-+ * at least 1, otherwise the bdnz instruction will make
-+ * it negative and iterate billions of times.
-+ */
-+ ppc_addi (code, ppc_r0, ins->sreg1, 7);
- ppc_srawi (code, ppc_r0, ppc_r0, 2);
- ppc_mtctr (code, ppc_r0);
- }
-@@ -2571,7 +2575,10 @@
-
- if (ins->flags & MONO_INST_INIT) {
- /* adjust the dest reg by -4 so we can use stwu */
-- ppc_addi (code, ins->dreg, ppc_sp, (area_offset - 4));
-+ /* we actually adjust -8 because we let the loop
-+ * run at least once
-+ */
-+ ppc_addi (code, ins->dreg, ppc_sp, (area_offset - 8));
- ppc_li (code, ppc_r11, 0);
- zero_loop_start = code;
- ppc_stwu (code, ppc_r11, 4, ins->dreg);