http://www.perlmonks.org?node_id=11111230


in reply to Re^3: Why not perl have raw/native type
in thread Why not perl have raw/native type

Same xxx other colour:

foo needs a function signature with the right type.

And yes I know that subs can be redefined, but change of prototype is also emitting a warning.

Really complicated are lvalue situations like aliasing!

But hey, I never said it's easy... ;)

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

  • Comment on Re^4: Why not perl have raw/native type

Replies are listed 'Best First'.
Re^5: Why not perl have raw/native type
by dave_the_m (Monsignor) on Jan 10, 2020 at 21:28 UTC
    You call a sub which is declared as accepting an integer arg - so perl pushes an int value dircectly onto the stack rather than the usual pointer to SV. But if someone in the meantime has redefined foo() to be a sub accepting a normal SV argument, then perl won't just do the wrong thing - it will likely crash with a SEGV, or even be a security hole, when it tries to interpret that integer value as the address of an SV.

    Dave.

      That's why I mentioned

      > > And yes I know that subs can be redefined, but change of prototype is also emitting a warning.

      Warnings to Fatals.

      > it will likely crash with a SEGV, or even be a security hole, when it tries to interpret that integer value as the address of an SV.

      I suppose using Inline::C or Inline::CPP is even worse, when it comes to such risks.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery FootballPerl is like chess, only without the dice