https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90393
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code CC| |jason at gcc dot gnu.org Known to work| |8.3.0 Known to fail| |10.0, 9.1.0 --- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is a wrong code bug too: extern "C" void* malloc(decltype(sizeof(0))); extern "C" void free(void*); struct string { string(int) : s(malloc(1)) { } ~string() { free(s); } string(const string& str) : s(str.s ? malloc(1) : nullptr) { } void* s; bool empty() const { return s == nullptr; } }; string foo() { string s(42); return s.empty() ? throw "empty" : s; } int main() { foo(); } free(): double free detected in tcache 2 Aborted (core dumped)