From: Dave Airlie <airl...@redhat.com> 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. Cc: <mesa-sta...@lists.freedesktop.org> --- 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 3f6431b80f5..5556531f145 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 = decltype(I){rv.erase(std::next(I).base())}; ++converted; - } + } else + ++I; } return 0; } -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev