Are iterators into a Glib::ustring still valid after the string is modified? Specifically appended to or modified at or beyond where the iterator points. Especially if appending to the string causes the underlying bytes to be relocated to a larger allocation. I didn't obviously see this mentioned in the documentation.
I though it might be valid because the iterator appears to be implemented using a pointer difference type. However the following small test program fails with: ** ERROR:test.cc:28:int main(): assertion failed: (linestart <= cursor) Aborted Thanks, Mike --8<-- test.cc --8<-- #include <glib.h> #include <glibmm/ustring.h> int main() { Glib::ustring buf; Glib::ustring::iterator linestart = buf.begin(); Glib::ustring::iterator cursor = buf.begin(); gunichar uc = 'u'; buf.append(1, uc); cursor = buf.end(); g_assert(buf.begin() <= linestart); g_assert(linestart <= cursor); g_assert(cursor <= buf.end()); return 0; } _______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtkmm-list