You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2001/01/05 06:48:14 UTC

cvs commit: modperl/src/modules/perl perl_util.c

dougm       01/01/04 21:48:14

  Modified:    .        Changes
               src/modules/perl perl_util.c
  Log:
  fix $r subclassing mechanism when value of `r' or `_r' key is a hashref
  
  Revision  Changes    Path
  1.569     +3 -0      modperl/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl/Changes,v
  retrieving revision 1.568
  retrieving revision 1.569
  diff -u -r1.568 -r1.569
  --- Changes	2001/01/05 05:42:19	1.568
  +++ Changes	2001/01/05 05:48:14	1.569
  @@ -10,6 +10,9 @@
   
   =item 1.24_02-dev
   
  +fix $r subclassing mechanism when value of `r' or `_r' key is a hashref
  +thanks to Dave LaMacchia for the spot
  +
   fix Apache::PerlRun is-a -> has-a Apache relationship change oversight
   [Ken Williams <ke...@forum.swarthmore.edu>]
   
  
  
  
  1.44      +6 -1      modperl/src/modules/perl/perl_util.c
  
  Index: perl_util.c
  ===================================================================
  RCS file: /home/cvs/modperl/src/modules/perl/perl_util.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- perl_util.c	2000/09/29 16:33:40	1.43
  +++ perl_util.c	2001/01/05 05:48:14	1.44
  @@ -122,8 +122,13 @@
   	    int klen = strlen(r_keys[i]);
   	    if(hv_exists((HV*)SvRV(in), r_keys[i], klen) &&
   	       (sv = *hv_fetch((HV*)SvRV(in), 
  -			       r_keys[i], klen, FALSE)))
  +			       r_keys[i], klen, FALSE))) {
  +                if (SvROK(sv) && (SvTYPE(SvRV(sv)) == SVt_PVHV)) {
  +                    /* dig deeper */
  +                    return sv2request_rec(sv, pclass, cv);
  +                }
   		break;
  +            }
   	}
   	if(!sv)
   	    croak("method `%s' invoked by a `%s' object with no `r' key!",