Author: chromatic
Date: Sat Jun 16 01:20:45 2007
New Revision: 19040

Modified:
   trunk/src/pmc/coroutine.pmc

Log:
[PMC] Cleaned up two memory leaks in Coroutine PMC.

Modified: trunk/src/pmc/coroutine.pmc
==============================================================================
--- trunk/src/pmc/coroutine.pmc (original)
+++ trunk/src/pmc/coroutine.pmc Sat Jun 16 01:20:45 2007
@@ -100,10 +100,26 @@
 
     void init() {
         PMC_struct_val(SELF) = new_coroutine(INTERP);
-        PMC_pmc_val(SELF) = NULL;
+        PMC_pmc_val(SELF)    = NULL;
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
+/*
+
+=item C<void destroy()>
+
+Destroys the coroutine.
+
+*/
+
+    void destroy () {
+        Parrot_coro *sub = PMC_coro(SELF);
+        if (sub->ctx)
+            Parrot_free_context(interp, sub->ctx, 0);
+
+        SUPER();
+    }
+
     PMC* clone() {
         Parrot_coro *sub;
         PMC         *ret    = pmc_new_noinit(INTERP, SELF->vtable->base_type);

Reply via email to