in reply to perlembed - limit on size of variable being passed to perl from C

When you use 0 as the second arg to newSVpv(), the variable is deemed to finish at the first NULL character (\0). Therefore if htmlFileBuffer contains one or more embedded NULLs (which I would think is unlikely) you won't get what you want. In that case you would need to specify the actual size as the second arg to newSVpv().

Here's a little demo Inline::C script:
use warnings; use Inline C => Config => BUILD_NOISY => 1; use Inline C => <<'EOC'; SV * foo(char * sv) { return newSVpv(sv, 0); } SV * foo2(char * sv, int len) { return newSVpv(sv, len); } EOC $x = 'hello' . "\0" . 'world'; print $x, " ", length($x), "\n"; $y = foo($x); print $y, " ", length($y), "\n"; $z = foo2($x, length($x)); print $z, " ", length($z), "\n";
It prints:
hello world 11
hello 5
hello world 11

Cheers,
Rob
  • Comment on Re: perlembed - limit on size of variable being passed to perl from C
  • Download Code