develooper Front page | perl.perl5.porters | Postings from August 2021

Re: Robin Hood Hashing for the perl core

Thread Previous | Thread Next
From:
Dave Mitchell
Date:
August 30, 2021 12:53
Subject:
Re: Robin Hood Hashing for the perl core
Message ID:
YSzUwE/uz6F1gC8Q@iabyn.com
On Wed, Aug 18, 2021 at 10:15:48AM +0000, Nicholas Clark wrote:
> > How will this affect the hv_fetch_ent() and similar functions, which
> > return a pointer to a HE? In particular what happens to such a pointer if
> > the HvARRAY() gets reallocated in the meantime. E.g.
> > 
> >     HE *he = hv_fetch_ent(hv, ...);
> >     hv_store(hv,...); /* XXX triggers HvARRAY realloc */
> >     do_something_with(he->val); /* using freed memory! */
> 
> It will go wrong the way that you figured out.

Perhaps we should update the docs for hv_*ent() now to state that the
returned value has a limited lifetime, and mustn't be used after any
further 'write' to the hash?

-- 
My Dad used to say 'always fight fire with fire', which is probably why
he got thrown out of the fire brigade.

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