https://gcc.gnu.org/g:6621e5a1d1195137a1dd6d917961ab23609a244c

commit r15-9146-g6621e5a1d1195137a1dd6d917961ab23609a244c
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Mar 18 18:37:01 2025 +0000

    cobol: Fix incorrect use of std::remove_if
    
    The call to std::remove_if used here doesn't remove any elements, it
    just overwrites the "removed" elements with later elements, leaving the
    total number of elements unchanged. Use std::list::remove_if to actually
    remove those unwanted elements from the list.
    
    gcc/cobol/ChangeLog:
    
            * symfind.cc (finalize_symbol_map2): Use std::list::remove_if
            instead of std::remove_if.

Diff:
---
 gcc/cobol/symfind.cc | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/gcc/cobol/symfind.cc b/gcc/cobol/symfind.cc
index 2687fdb83df2..899571551e8f 100644
--- a/gcc/cobol/symfind.cc
+++ b/gcc/cobol/symfind.cc
@@ -128,11 +128,10 @@ finalize_symbol_map2() {
 
   for( auto& elem : symbol_map2 ) {
     auto& fields( elem.second );
-    std::remove_if( fields.begin(), fields.end(),
-                  []( auto isym ) {
-                    auto f = cbl_field_of(symbol_at(isym));
-                    return f->type == FldInvalid;
-                  } );
+    fields.remove_if( []( auto isym ) {
+                       auto f = cbl_field_of(symbol_at(isym));
+                       return f->type == FldInvalid;
+                     } );
     if( fields.empty() ) empties.insert(elem.first);
   }

Reply via email to