[svn:parrot] r40503 - branches/auto_attrs/src/pmc

NotFound at svn.parrot.org NotFound at svn.parrot.org
Wed Aug 12 12:16:52 UTC 2009


Author: NotFound
Date: Wed Aug 12 12:16:50 2009
New Revision: 40503
URL: https://trac.parrot.org/parrot/changeset/40503

Log:
set auto_attrs on Socket and Sockaddr PMCs

Modified:
   branches/auto_attrs/src/pmc/sockaddr.pmc
   branches/auto_attrs/src/pmc/socket.pmc

Modified: branches/auto_attrs/src/pmc/sockaddr.pmc
==============================================================================
--- branches/auto_attrs/src/pmc/sockaddr.pmc	Wed Aug 12 11:45:29 2009	(r40502)
+++ branches/auto_attrs/src/pmc/sockaddr.pmc	Wed Aug 12 12:16:50 2009	(r40503)
@@ -29,7 +29,7 @@
 }
 #endif
 
-pmclass Sockaddr need_ext {
+pmclass Sockaddr need_ext auto_attrs {
     ATTR void   *pointer; /* The stored pointer. */
 
 /*
@@ -44,10 +44,10 @@
 
     VTABLE void init() {
         Parrot_Sockaddr_attributes * const pdata_struct =
-            mem_allocate_typed(Parrot_Sockaddr_attributes);
+            (Parrot_Sockaddr_attributes *) PMC_data(SELF);
 
-        PMC_data(SELF)        = pdata_struct;
         pdata_struct->pointer = mem_allocate_zeroed_typed(struct sockaddr_in);
+        PObj_active_destroy_SET(SELF);
     }
 
 /*
@@ -65,8 +65,7 @@
 
         if (data) {
             mem_sys_free(data->pointer);
-            mem_sys_free(data);
-            PMC_data(SELF) = NULL;
+            data->pointer = NULL;
         }
     }
 

Modified: branches/auto_attrs/src/pmc/socket.pmc
==============================================================================
--- branches/auto_attrs/src/pmc/socket.pmc	Wed Aug 12 11:45:29 2009	(r40502)
+++ branches/auto_attrs/src/pmc/socket.pmc	Wed Aug 12 12:16:50 2009	(r40503)
@@ -20,7 +20,7 @@
 
 #include "../src/io/io_private.h"
 
-pmclass Socket extends Handle {
+pmclass Socket extends Handle auto_attrs {
     ATTR PMC *local;           /* Local addr                   */
     ATTR PMC *remote;          /* Remote addr                  */
 
@@ -36,9 +36,8 @@
 
     VTABLE void init() {
         Parrot_Socket_attributes *data_struct =
-                mem_allocate_zeroed_typed(Parrot_Socket_attributes);
+                (Parrot_Socket_attributes *) PMC_data(SELF);
 
-        PMC_data(SELF)      = data_struct;
         data_struct->local  = PMCNULL;
         data_struct->remote = PMCNULL;
 
@@ -119,7 +118,6 @@
                 Parrot_io_close_piohandle(interp, data_struct->os_handle);
             data_struct->os_handle = PIO_INVALID_HANDLE;
         }
-        PMC_data(SELF) = NULL;
     }
 
 /*


More information about the parrot-commits mailing list