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: