(PerlIO::)scalar.t: Add function for testing trailing null
authorEric Brine <ikegami@adaelis.com>
Fri, 20 Jan 2012 02:19:16 +0000 (18:19 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 20 Jan 2012 06:38:36 +0000 (22:38 -0800)
ext/PerlIO-scalar/t/scalar.t

index b59e3aa..48883b6 100644 (file)
@@ -317,3 +317,17 @@ EOF
     open my $fh, "<", \(my $f=*f); seek $fh, -2,2;
     pass 'seeking on a glob copy from the end';
 }
+
+sub has_trailing_nul(\$) {
+   my ($ref) = @_;
+   my $sv = B::svref_2object($ref);
+   return undef if !$sv->isa('B::PV');
+
+   my $cur = $sv->CUR;
+   my $len = $sv->LEN;
+   return 0 if $cur >= $len;
+
+   my $pv_addr = unpack 'J', pack 'P', $$ref;
+   my $trailing = unpack 'P', pack 'J', $pv_addr+$cur;
+   return $trailing eq "\0";
+}