From owner-freebsd-bugs@FreeBSD.ORG Sat Aug 2 23:37:58 2014 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 836E410E for ; Sat, 2 Aug 2014 23:37:58 +0000 (UTC) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6B6002BD5 for ; Sat, 2 Aug 2014 23:37:58 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.8/8.14.8) with ESMTP id s72Nbw6o054450 for ; Sat, 2 Aug 2014 23:37:58 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 192303] C++11 std::list<>::remove_if() visits elements multiple times Date: Sat, 02 Aug 2014 23:37:58 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: 10.0-STABLE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: kamikaze@bsdforen.de X-Bugzilla-Status: Needs Triage X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: attachments.created Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Aug 2014 23:37:58 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192303 --- Comment #3 from kamikaze@bsdforen.de --- Created attachment 145275 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=145275&action=edit Proposed fix The issue is an optimisation in the implementation. If __pred(*__i) returns true, the method goes into an inner loop that looks for subsequent items to delete in the list for cumulative deletion. After performing deletion the iterator will point to the first item behind the deleted items. Which has already been visited (returning false ended the inner loop). The proposed patch points the iterator past this list entry - unless the iterator points to the end of the list. -- You are receiving this mail because: You are the assignee for the bug.