aboutsummaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorpmichaud <pmichaud@pobox.com>2010-08-25 13:14:30 -0500
committerpmichaud <pmichaud@pobox.com>2010-08-25 13:14:30 -0500
commitfdcbadfbb92eaaabdb31d36f7efcf167d252e983 (patch)
tree592ef4198e5315e228c2a675e42b6a81a288a942 /build
parentc7482a0abc169c8812a10ee06c054660cd95e2df (diff)
Add specialized bits to apply patches for the 2010.08 release.
Diffstat (limited to 'build')
-rw-r--r--build/2010.08-patch.pl9
-rw-r--r--build/patch/2010.08-3a339e.patch47
2 files changed, 56 insertions, 0 deletions
diff --git a/build/2010.08-patch.pl b/build/2010.08-patch.pl
new file mode 100644
index 0000000..4e623cd
--- /dev/null
+++ b/build/2010.08-patch.pl
@@ -0,0 +1,9 @@
+#! perl
+
+## Star patches to be applied to the 2010.08 release
+
+my $DISTDIR = $ENV{'DISTDIR'};
+
+system("cp build/patch/2010.08-3a339e.patch $DISTDIR/build");
+system("cd $DISTDIR/rakudo; patch -p1 <../build/2010.08-3a339e.patch");
+
diff --git a/build/patch/2010.08-3a339e.patch b/build/patch/2010.08-3a339e.patch
new file mode 100644
index 0000000..0995bb4
--- /dev/null
+++ b/build/patch/2010.08-3a339e.patch
@@ -0,0 +1,47 @@
+commit 3a339ee8ab3a72867fe914ec9c689e1f5a890645
+Author: tcurtis <tyler.l.curtis@gmail.com>
+Date: Tue Aug 24 15:52:28 2010 -0500
+
+ Switch objectref_pmc.template to auto_attrs.
+
+ Fixes a nasty memory leak that would leak at least 3 scalars per block.
+ Now a simple 'while 1 { }' loop seems not to leak anymore.
+
+ Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
+
+diff --git a/src/pmc/objectref_pmc.template b/src/pmc/objectref_pmc.template
+index d0a8daa..cafc1d2 100644
+--- a/src/pmc/objectref_pmc.template
++++ b/src/pmc/objectref_pmc.template
+@@ -19,7 +19,7 @@ Forwards all but some methods to the held PMC.
+ #include "parrot/parrot.h"
+ static STRING *OBJECTREF_str;
+
+-pmclass ObjectRef dynpmc group perl6_group manual_attrs {
++pmclass ObjectRef dynpmc group perl6_group auto_attrs {
+ ATTR PMC *value;
+
+ void class_init() {
+@@ -36,10 +36,6 @@ pmclass ObjectRef dynpmc group perl6_group manual_attrs {
+ VTABLE void init_pmc(PMC *value) {
+ /* Need custom mark and destroy. */
+ PObj_custom_mark_SET(SELF);
+- PObj_custom_destroy_SET(SELF);
+-
+- /* Create underlying structure. */
+- PMC_data(SELF) = mem_allocate_zeroed_typed(Parrot_ObjectRef_attributes);
+
+ /* Initialize with an undef PMC if no value. */
+ if (PMC_IS_NULL(value))
+@@ -56,11 +52,6 @@ pmclass ObjectRef dynpmc group perl6_group manual_attrs {
+ }
+ }
+
+- VTABLE void destroy() {
+- mem_sys_free(PMC_data(SELF));
+- PMC_data(SELF) = NULL;
+- }
+-
+ VTABLE PMC * get_pmc() {
+ PMC * value;
+ GET_ATTR_value(INTERP, SELF, value);