> H.Merijn Brand wrote:
>
> I am preparing HP-UX depots, and Inline::C wasn't being nice to
me:
> Inline-0.45
>
> t/01usages.t .. defined(%hash) is deprecated at blib/lib/Inline.pm
> (autosplit into
> blib/lib/auto/Inline/check_config_file.al) line 671 (#1)
> (D deprecated) defined() is not usually useful on hashes
because it
> checks for an undefined scalar value. If you want to see if
the
> hash
> is empty, just use if (%hash) { # not empty } for example.
>
> (Maybe you should just omit the defined()?)
>
> but all tests pass.
Yes - Nicholas Clark submitted a bug report about this, and it was fixed
for 0.46
> Inline-0.46
>
> t/06parseregexp.t .... Subroutine Inline::C::get_parser redefined
at
> ../blib/lib/Inline.pm line 312 (#1)
> (W redefine) You redefined a subroutine. To suppress this
warning,
> say
>
> {
> no warnings 'redefine';
> eval "sub name { ... }";
> }
>
The above warnings come about as a result of changes to
Inline::_push_overrides().
The warnings are suppressed in later releases (including 0.46_01) but
were deliberately left in place for 0.46 as a troubleshooting aid - ie
in case there was some problem with those changes made to
Inline::_push_overrides().
> t/08taint.t .......... In Inline::env_untaint() : Blindly
untainting
> tainted fields in %ENV.
> In Inline::env_untaint() : Blindly untainting tainted fields in
%ENV.
> In Inline::obj_untaint() : Blindly untainting tainted fields in
Inline
> object.
These warnings are placed there deliberately to draw attention to the
fact that Inline *blindly* performs some untainting when running in
taint mode. I've no plans to remove them, as I think it's
important that attention be drawn to this ill-advised manner in which
Inline performs untainting. (The warnings *can* be suppressed if so
desired - though not for the tests.)
> Uncaught exception from user code:
> /bin/sh: gcc: not found.
Some of the blind untainting that Inline does is:
#######################
$ENV{PATH} = $^O eq 'MSWin32' ?
join ';', grep {not /^\./ and -d $_
} split /;/, $ENV{PATH}
:
join ':', grep {not /^\./ and -d $_ and
not ((stat($_))[2] & 0022)
} split /:/, $ENV{PATH};
########################
And I think that's where the directory containing gcc gets removed
from the path.
I speculate that if the "not ((stat($_))[2] & 0022)"
condition is removed (as is the case wrt MS windows) then the tests
would pass. You might be able to confirm that for me as I don't have
access to a box that presents that failure.
Suggestions on a best remedy also welcome. (IMHO, complete removal of
untainting capability would be the best - but you'll need to get
Ingy to sanction that before I'll do it.)
Cheers,
Rob