cvsuser     04/01/02 09:01:02

  Modified:    classes  env.pmc perlenv.pmc
  Log:
  create PerlEnv PMCs as singletons
  
  Revision  Changes    Path
  1.10      +3 -3      parrot/classes/env.pmc
  
  Index: env.pmc
  ===================================================================
  RCS file: /cvs/public/parrot/classes/env.pmc,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- env.pmc   10 Dec 2003 17:18:30 -0000      1.9
  +++ env.pmc   2 Jan 2004 17:01:01 -0000       1.10
  @@ -1,7 +1,7 @@
   /* env.pmc
    *  Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: env.pmc,v 1.9 2003/12/10 17:18:30 leo Exp $
  + *     $Id: env.pmc,v 1.10 2004/01/02 17:01:01 leo Exp $
    *  Overview:
    *     These are the vtable functions for the Env base class, which
    *     accesses the system environment
  @@ -18,7 +18,7 @@
       STRING* get_string_keyed(PMC* key) {
        char *keyname = string_to_cstring(interpreter,
                VTABLE_get_string(interpreter, key));
  -     int free_it;
  +     int free_it = 0;
        STRING *retval;
        char *val = NULL;
   
  @@ -33,7 +33,7 @@
        } else {
            retval = string_from_cstring(interpreter, "", 0);
        }
  -     if (free_it) mem_sys_free(val);
  +     if (free_it && val) mem_sys_free(val);
           return retval;
       }
   
  
  
  
  1.2       +15 -2     parrot/classes/perlenv.pmc
  
  Index: perlenv.pmc
  ===================================================================
  RCS file: /cvs/public/parrot/classes/perlenv.pmc,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -w -r1.1 -r1.2
  --- perlenv.pmc       3 Nov 2003 15:06:44 -0000       1.1
  +++ perlenv.pmc       2 Jan 2004 17:01:01 -0000       1.2
  @@ -1,7 +1,7 @@
   /* perlenv.pmc
    *  Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perlenv.pmc,v 1.1 2003/11/03 15:06:44 educated_foo Exp $
  + *     $Id: perlenv.pmc,v 1.2 2004/01/02 17:01:01 leo Exp $
    *  Overview:
    *     These are the vtable functions for the Env base class, which
    *     accesses the system environment
  @@ -13,7 +13,20 @@
   
   #include "parrot/parrot.h"
   
  -pmclass PerlEnv extends Env {
  +static PMC * Env_PMC;
  +
  +pmclass PerlEnv singleton extends Env {
  +    /*
  +     * singleton creation interface s. pmc.c
  +     */
  +    void* get_pointer() {
  +     return Env_PMC;
  +    }
  +
  +    void set_pointer(void* ptr) {
  +     Env_PMC = (PMC*) ptr;
  +    }
  +
       PMC* get_pmc_keyed (PMC* key) {
        STRING* string = DYNSELF.get_string_keyed(key);
        PMC * ret = pmc_new(INTERP, enum_class_PerlString);
  
  
  

Reply via email to