develooper Front page | perl.perl5.porters | Postings from December 2017

[perl #132638] I've discovered a segfault

Thread Previous | Thread Next
From:
James E Keenan via RT
Date:
December 23, 2017 14:23
Subject:
[perl #132638] I've discovered a segfault
Message ID:
rt-4.0.24-21624-1514038984-1460.132638-15-0@perl.org
On Sat, 23 Dec 2017 07:56:23 GMT, zefram@fysh.org wrote:
> Danijel Tasov wrote:
> >use overload
> >'eq' => \&equals_to,
> ...
> >sub equals_to{ $_[0] eq $_[1] }
> 
> Here's your problem you've defined the "eq" overload to apply "eq" to
> its operands, which invokes the "eq" overload in an infinite recursion.
> The segv is just C stack overflow.  You probably want to write the "eq"
> overload as
> 
>     sub equals_to{ "$_[0]" eq $_[1] }
> 
> or just remove that overload and enable overload fallback, so that Perl
> will synthesise that "eq" overload for you.
> 
> There is no Perl bug here.
> 
> -zefram

There may not be a bug in perl here -- but there's certainly a deficiency in our documentation.

I've been writing Perl for a long time but have never had occasion to 'use overload'.  I stared at the original poster's code and couldn't see anything obviously wrong.  I then went and read the documentation.  Again, I couldn't find anything that would lead me to guess that the OP's code would segfault.

So we have to improve the documentation.  Otherwise, people will repeatedly stumble into this problem.  How should we change the docs?

Thank you very much.

-- 
James E Keenan (jkeenan@cpan.org)

---
via perlbug:  queue: perl5 status: open
https://rt.perl.org/Ticket/Display.html?id=132638

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About