cvs commit: modperl-2.0/xs typemap

2002-05-23 Thread dougm

dougm   02/05/23 21:42:57

  Modified:xs   typemap
  Log:
  need to use modperl version of sv_setref_uv, since it doesn't exist in
  5.6.x
  
  Revision  ChangesPath
  1.8   +1 -1  modperl-2.0/xs/typemap
  
  Index: typemap
  ===
  RCS file: /home/cvs/modperl-2.0/xs/typemap,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- typemap   23 May 2002 22:19:34 -  1.7
  +++ typemap   24 May 2002 04:42:57 -  1.8
   -18,7 +18,7 
sv_setnv($arg, (NV)($var / APR_USEC_PER_SEC));
   
   T_UVOBJ
  - sv_setref_uv($arg, \${ntype}\, (UV)$var);
  + modperl_perl_sv_setref_uv(aTHX_ $arg, \${ntype}\, (UV)$var);
   
   ##
   INPUT
  
  
  



cvs commit: modperl-2.0/xs typemap

2002-04-09 Thread dougm

dougm   02/04/09 13:19:25

  Modified:xs   typemap
  Log:
  override T_PTROBJ INPUT typemap to croak if object is not a blessed
  reference, to prevent possible segv from e.g. Apache::Server-process
  
  Revision  ChangesPath
  1.6   +11 -0 modperl-2.0/xs/typemap
  
  Index: typemap
  ===
  RCS file: /home/cvs/modperl-2.0/xs/typemap,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- typemap   25 Sep 2001 19:44:03 -  1.5
  +++ typemap   9 Apr 2002 20:19:25 -   1.6
   -19,6 +19,17 
   
   ##
   INPUT
  +T_PTROBJ
  + if (SvROK($arg)  sv_derived_from($arg, \${ntype}\)) {
  + IV tmp = SvIV((SV*)SvRV($arg));
  + $var = INT2PTR($type,tmp);
  + }
  + else {
  + Perl_croak(aTHX_ SvROK($arg) ?
  +   \$var is not of type ${ntype}\ :
  +   \$var is not a blessed reference\);
  +}
  +
   T_APACHEOBJ
$var = modperl_xs_sv2request_rec(aTHX_ $arg, \$ntype\, cv)
   
  
  
  



cvs commit: modperl-2.0/xs typemap

2001-04-28 Thread dougm

dougm   01/04/28 16:03:08

  Modified:lib/ModPerl WrapXS.pm
   src/modules/perl modperl_types.h
   xs   typemap
  Log:
  since input typemap for char* already calls SvPV(), make use of the length parameter 
for strings that are copied using the given pool
  
  Revision  ChangesPath
  1.10  +12 -4 modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- WrapXS.pm 2001/04/28 22:35:19 1.9
  +++ WrapXS.pm 2001/04/28 23:03:07 1.10
  @@ -152,9 +152,7 @@
   if (my $pool = $e-{pool}) {
   $pool .= '(obj)';
   $val = ((ST(1) == PL_sv_undef) ? NULL :
  -(SvPOK(ST(1)) ?
  -apr_pstrndup($pool, SvPVX(ST(1)), SvCUR(ST(1))) :
  -apr_pstrdup($pool, val)));
  +apr_pstrndup($pool, val, val_len))
   }
   }
   
  @@ -179,11 +177,21 @@
   (my $cast = $type) =~ s/:/_/g;
   my $val = get_value($e);
   
  +my $type_in = $type;
  +my $preinit = /*nada*/;
  +if ($e-{class} eq 'PV' and $val ne 'val') {
  +$type_in =~ s/char/char_len/;
  +$preinit = STRLEN val_len;;
  +}
  +
   my $code = EOF;
   $type
   $name(obj, val=$default)
   $class obj
  -$type val
  +$type_in val
  +
  +PREINIT:
  +$preinit
   
   CODE:
   RETVAL = ($cast) obj-$name;
  
  
  
  1.38  +1 -0  modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- modperl_types.h   2001/04/24 05:10:40 1.37
  +++ modperl_types.h   2001/04/28 23:03:08 1.38
  @@ -14,6 +14,7 @@
   typedef request_rec subrequest_rec;
   typedef apr_array_header_t MpAV;
   typedef apr_table_tMpHV;
  +typedef char char_len; /* see xs/typemap */
   
   /* mod_perl structures */
   
  
  
  
  1.2   +8 -0  modperl-2.0/xs/typemap
  
  Index: typemap
  ===
  RCS file: /home/cvs/modperl-2.0/xs/typemap,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- typemap   2001/03/05 04:01:13 1.1
  +++ typemap   2001/04/28 23:03:08 1.2
  @@ -1,5 +1,7 @@
   TYPEMAP
   void *   T_VPTR
  +char_len *  T_CHAR_LEN
  +const char_len *T_CONST_CHAR_LEN
   
   ##
   OUTPUT
  @@ -10,3 +12,9 @@
   INPUT
   T_VPTR
$var = INT2PTR($type,SvIV(SvROK($arg) ? SvRV($arg) : $arg))
  +
  +T_CHAR_LEN
  +$var = (char *)SvPV($arg, ${var}_len)
  +
  +T_CONST_CHAR_LEN
  +$var = (const char *)SvPV($arg, ${var}_len)