This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/77312] Lambda that deletes itself accesses freed memory, but only if class is templated
- From: "redi at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 22 Aug 2016 09:54:26 +0000
- Subject: [Bug c++/77312] Lambda that deletes itself accesses freed memory, but only if class is templated
- Authentication-results: sourceware.org; auth=none
- Auto-submitted: auto-generated
- References: <bug-77312-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77312
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #2)
> I don't see why you think this is valid thing to do.
> You are in a function which calls delete on the object you are in currently.
> That seems like this code is broken.
It's valid as long as nothing accesses any members of the class after it is
destroyed. When using code you don't control, such as std::function and a
lambda closure, you can't guarantee what it does or doesn't do with the memory.