Module: Mesa
Branch: master
Commit: 8c51caab2404c5c9f5211936d27e9fe1c0af2e7d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c51caab2404c5c9f5211936d27e9fe1c0af2e7d

Author: Dave Airlie <[email protected]>
Date:   Fri Jun 29 03:47:26 2018 +0100

r600/sb: cleanup if_conversion iterator to be legal C++

The current code causes:
/usr/include/c++/8/debug/safe_iterator.h:207:
Error: attempt to copy from a singular iterator.

This is due to the iterators getting invalidated, fix the
reverse iterator to use the return value from erase, and
cast it properly.

(used Mathias suggestion)
Cc: <[email protected]>
Reviewed-by: Mathias Fröhlich <[email protected]>

---

 src/gallium/drivers/r600/sb/sb_if_conversion.cpp | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/r600/sb/sb_if_conversion.cpp 
b/src/gallium/drivers/r600/sb/sb_if_conversion.cpp
index 3f6431b80f..017153434f 100644
--- a/src/gallium/drivers/r600/sb/sb_if_conversion.cpp
+++ b/src/gallium/drivers/r600/sb/sb_if_conversion.cpp
@@ -42,16 +42,13 @@ int if_conversion::run() {
        regions_vec &rv = sh.get_regions();
 
        unsigned converted = 0;
-
-       for (regions_vec::reverse_iterator N, I = rv.rbegin(), E = rv.rend();
-                       I != E; I = N) {
-               N = I; ++N;
-
+       for (regions_vec::reverse_iterator I = rv.rbegin(); I != rv.rend(); ) {
                region_node *r = *I;
                if (run_on(r)) {
-                       rv.erase(I.base() - 1);
+                       I = 
regions_vec::reverse_iterator(rv.erase((++I).base()));
                        ++converted;
-               }
+               } else
+                       ++I;
        }
        return 0;
 }

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to