From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 0048D3858C20; Thu, 10 Feb 2022 19:35:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0048D3858C20 From: "thiago at kde dot org" To: gcc-bugs@gcc.gnu.org Subject: =?UTF-8?B?W0J1ZyBjKysvMTA0NDkyXSBOZXc6IEJvZ3VzIGRhbmdsaW5nIHBv?= =?UTF-8?B?aW50ZXIgd2FybmluZyAoZGFuZ2xpbmcgcG9pbnRlciB0byDigJhjYW5kaWRh?= =?UTF-8?B?dGVz4oCZIG1heSBiZSB1c2VkIFstV2Vycm9yPWRhbmdsaW5nLXBvaW50ZXI9?= =?UTF-8?B?XSk=?= Date: Thu, 10 Feb 2022 19:35:28 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: thiago at kde dot org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2022 19:35:29 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D104492 Bug ID: 104492 Summary: Bogus dangling pointer warning (dangling pointer to =E2=80=98candidates=E2=80=99 may be used [-Werror=3Ddan= gling-pointer=3D]) Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: thiago at kde dot org Target Milestone: --- Created attachment 52409 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D52409&action=3Dedit Preprocessed sources for qlibrary.cpp Workaround: https://codereview.qt-project.org/c/qt/qtbase/+/394894 Original sources:=20 https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/plugin/qlibrary.cpp?= id=3D5e378aaff61c9708e0657f3ee29517c06cb075fa#n618 https://github.com/qt/qtbase/blob/5e378aaff61c9708e0657f3ee29517c06cb075fa/= src/corelib/plugin/qlibrary.cpp#L618-L677 Code snippet: auto isValidSuffix =3D [](QStringView s) { const QLatin1String candidates[] =3D { QLatin1String("so"), }; return std::find(std::begin(candidates), std::end(candidates), s) != =3D std::end(candidates); }; auto suffixes =3D qTokenize(completeSuffix, u'.'); auto it =3D suffixes.begin(); const auto end =3D suffixes.end(); while (it !=3D end) { if (isValidSuffix(*it++)) return true; } return false; This code above produces the warning: qlibrary.cpp:114:9: error: dangling pointer to =E2=80=98candidates=E2=80=99= may be used [-Werror=3Ddangling-pointer=3D]=20=20=20=20=20=20=20=20=20=20 114 | if (isValidSuffix(*it++))=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20 | ^~=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 qlibrary.cpp:76:29: note: =E2=80=98candidates=E2=80=99 declared here=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20 76 | const QLatin1String candidates[] =3D {=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 | ^~~~~~~~~~=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 The 'candidates' variable has indeed gone out of scope, but there's no use = of its pointer where the lambda is used. The lambda does a std::find, which returns a pointer into the array, but that pointer is compared to std::end = and the lambda returns a boolean. Compile the attached preprocessed sources with: g++ -march=3Dx86-64-v3 -Wall -Wextra -O3 -o /dev/null -c qlibrary.cpp.ii GCC commit 1ce5395977f37e8d0c03394f7b932a584ce85cc7 (master branch dated 2022-02-09).=