dougm       01/10/13 11:55:03

  Modified:    src/modules/perl modperl_perl_global.c modperl_perl_global.h
  Log:
  s/hv_fetch/hv_fetch_he/g
  
  Revision  Changes    Path
  1.10      +24 -9     modperl-2.0/src/modules/perl/modperl_perl_global.c
  
  Index: modperl_perl_global.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_perl_global.c     2001/10/08 21:09:08     1.9
  +++ modperl_perl_global.c     2001/10/13 18:55:03     1.10
  @@ -12,8 +12,14 @@
   
   /* XXX: PL_modglobal thingers might be useful elsewhere */
   
  +#define MP_MODGLOBAL_FETCH(gkey) \
  +hv_fetch_he(PL_modglobal, (char *)gkey->val, gkey->len, gkey->hash)
  +
  +#define MP_MODGLOBAL_STORE_HV(gkey) \
  +(HV*)*hv_store(PL_modglobal, gkey->val, gkey->len, (SV*)newHV(), gkey->hash)
  +
   #define MP_MODGLOBAL_ENT(key) \
  -{key, "ModPerl::" key, (sizeof("ModPerl::")-1)+(sizeof(key)-1)}
  +{key, "ModPerl::" key, (sizeof("ModPerl::")-1)+(sizeof(key)-1), 0}
   
   static modperl_modglobal_key_t MP_modglobal_keys[] = {
       MP_MODGLOBAL_ENT("END"),
  @@ -36,18 +42,18 @@
   static AV *modperl_perl_global_avcv_fetch(pTHX_ modperl_modglobal_key_t *gkey,
                                             const char *package, I32 packlen)
   {
  -    SV **svp = hv_fetch(PL_modglobal, gkey->val, gkey->len, FALSE);
  +    HE *he = MP_MODGLOBAL_FETCH(gkey);
       HV *hv;
   
  -    if (!(svp && (hv = (HV*)*svp))) {
  +    if (!(he && (hv = (HV*)HeVAL(he)))) {
           return Nullav;
       }
   
  -    if (!(svp = hv_fetch(hv, package, packlen, FALSE))) {
  +    if (!(he = hv_fetch_he(hv, (char *)package, packlen, 0))) {
           return Nullav;
       }
   
  -    return (AV*)*svp;
  +    return (AV*)HeVAL(he);
   }
   
   void modperl_perl_global_avcv_call(pTHX_ modperl_modglobal_key_t *gkey,
  @@ -76,6 +82,7 @@
   
   static int modperl_perl_global_avcv_set(pTHX_ SV *sv, MAGIC *mg)
   {
  +    HE *he;
       HV *hv;
       AV *mav, *av = (AV*)sv;
       const char *package = HvNAME(PL_curstash);
  @@ -83,11 +90,19 @@
       modperl_modglobal_key_t *gkey =
           (modperl_modglobal_key_t *)mg->mg_ptr;
   
  -    hv = (HV*)*hv_fetch(PL_modglobal, gkey->val, gkey->len, TRUE);
  -    (void)SvUPGRADE((SV*)hv, SVt_PVHV);
  +    if ((he = MP_MODGLOBAL_FETCH(gkey))) {
  +        hv = (HV*)HeVAL(he);
  +    }
  +    else {
  +        hv = MP_MODGLOBAL_STORE_HV(gkey);
  +    }
   
  -    mav = (AV*)*hv_fetch(hv, package, packlen, TRUE);
  -    (void)SvUPGRADE((SV*)mav, SVt_PVAV);
  +    if ((he = hv_fetch_he(hv, (char *)package, packlen, 0))) {
  +        mav = (AV*)HeVAL(he);
  +    }
  +    else {
  +        mav = (AV*)*hv_store(hv, package, packlen, (SV*)newAV(), 0);
  +    }
   
       /* $cv = pop @av */
       sv = AvARRAY(av)[AvFILLp(av)];
  
  
  
  1.8       +1 -0      modperl-2.0/src/modules/perl/modperl_perl_global.h
  
  Index: modperl_perl_global.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- modperl_perl_global.h     2001/10/07 22:07:15     1.7
  +++ modperl_perl_global.h     2001/10/13 18:55:03     1.8
  @@ -5,6 +5,7 @@
       const char *name;
       const char *val;
       I32 len;
  +    U32 hash;
   } modperl_modglobal_key_t;
   
   typedef enum {
  
  
  


Reply via email to