stas        2004/07/12 00:32:07

  Modified:    xs/APR/Bucket APR__Bucket.h
               xs/Apache/Filter Apache__Filter.h
               xs/Apache/RequestIO Apache__RequestIO.h
               .        Changes
  Added:       t/apache read2.t
               t/response/TestApache read2.pm
  Log:
  Fix ($r|$filter|$bucket)->read() functions to run the set magic logic,
  to handle cases when a passed buffer to fill is not a regular
  scalar.
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/apache/read2.t
  
  Index: read2.t
  ===================================================================
  use Apache::TestRequest 'POST_BODY_ASSERT';
  print POST_BODY_ASSERT "/TestApache__read2",
      content => "foobar";
  
  
  
  1.1                  modperl-2.0/t/response/TestApache/read2.pm
  
  Index: read2.pm
  ===================================================================
  package TestApache::read2;
  
  # extra tests in addition to TestApache::read
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::RequestRec ();
  use Apache::RequestIO ();
  use APR::Table ();
  
  use Apache::Test;
  use Apache::TestUtil;
  
  use Apache::Const -compile => qw(OK);
  
  my $expected = "foobar";
  
  sub handler {
      my $r = shift;
  
      plan $r, tests => 1;
  
      # test the case where the buffer to be filled has set magic
      # attached. which is the case when one passes an non-existing hash
      # entry value. it's not autovivified when passed to the function
      # and it's not undef. running SetMAGIC inside read accomplishes
      # the autovivication in this particular case.
      my $data;
      my $len = $r->read($data->{buffer}, $r->headers_in->{'Content-Length'});
  
      ok t_cmp($data->{buffer},
               $expected,
               "reading into an autovivified hash entry");
  
      Apache::OK;
  }
  1;
  
  
  
  
  1.12      +4 -0      modperl-2.0/xs/APR/Bucket/APR__Bucket.h
  
  Index: APR__Bucket.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/Bucket/APR__Bucket.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -u -r1.11 -r1.12
  --- APR__Bucket.h     13 Jun 2004 05:39:08 -0000      1.11
  +++ APR__Bucket.h     12 Jul 2004 07:32:07 -0000      1.12
  @@ -50,6 +50,10 @@
       }
   
       sv_setpvn(buffer, (len ? str : ""), len);
  +
  +    /* must run any set magic */
  +    SvSETMAGIC(buffer);
  +    
       return len;
   }
   
  
  
  
  1.41      +3 -0      modperl-2.0/xs/Apache/Filter/Apache__Filter.h
  
  Index: Apache__Filter.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/Filter/Apache__Filter.h,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -u -r1.40 -r1.41
  --- Apache__Filter.h  2 Jun 2004 18:49:22 -0000       1.40
  +++ Apache__Filter.h  12 Jul 2004 07:32:07 -0000      1.41
  @@ -77,6 +77,9 @@
           len = modperl_output_filter_read(aTHX_ modperl_filter, buffer, wanted);
       }
   
  +    /* must run any set magic */
  +    SvSETMAGIC(buffer);
  +    
       return len;
   }
   
  
  
  
  1.53      +6 -0      modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h
  
  Index: Apache__RequestIO.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -u -r1.52 -r1.53
  --- Apache__RequestIO.h       2 Jul 2004 23:20:47 -0000       1.52
  +++ Apache__RequestIO.h       12 Jul 2004 07:32:07 -0000      1.53
  @@ -199,6 +199,9 @@
           sv_setpvn(buffer, "", 0);
       }
   
  +    /* must run any set magic */
  +    SvSETMAGIC(buffer);
  +
       return nrd;
   }
   
  @@ -253,6 +256,9 @@
       else {
           sv_setpvn(bufsv, "", 0);
       }
  +
  +    /* must run any set magic */
  +    SvSETMAGIC(bufsv);
   
       return newSViv(total);
   }
  
  
  
  1.408     +4 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.407
  retrieving revision 1.408
  diff -u -u -r1.407 -r1.408
  --- Changes   10 Jul 2004 00:37:06 -0000      1.407
  +++ Changes   12 Jul 2004 07:32:07 -0000      1.408
  @@ -12,6 +12,10 @@
   
   =item 1.99_15-dev
   
  +Fix ($r|$filter|$bucket)->read() functions to run the set magic logic,
  +to handle cases when a passed buffer to fill is not a regular
  +scalar. [Stas]
  +
   Apache::ServerRec accessors changes: [Stas]
   - readonly accessors:
   
  
  
  

Reply via email to