610cfd618e
The == and != operators on filtered_iterator are not doing the right thing, they compare values pointed by the wrapped iterators instead of comparing the iterators themselves. As a result, operator== will return true if the two iterators point to two equal values at different positions. operator!= will fail similarly. Also, this causes it to deference past-the-end iterators when doing. For example, in for (iter = ...; iter != end_iter; ++iter) the != comparison dereferences end_iter. I don't think this should happen. I don't think it's a problem today, given that we only use filtered_iterator to wrap linked lists of threads and inferiors. Dereferencing past-the-end iterators of these types is not fatal, it just returns NULL, which is not a value we otherwise find in the lists. But in other contexts, it could become problematic. I have added a simple self test that fails without the fix applied. gdb/ChangeLog: * filtered-iterator.h (filtered_iterator) <operator==, operator!=>: Compare wrapped iterators, not wrapped pointers. * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add unittests/filtered_iterator-selftests.c. * unittests/filtered_iterator-selftests.c: New file. |
||
---|---|---|
.. | ||
basic_string_view | ||
optional | ||
array-view-selftests.c | ||
child-path-selftests.c | ||
cli-utils-selftests.c | ||
common-utils-selftests.c | ||
copy_bitwise-selftests.c | ||
environ-selftests.c | ||
filtered_iterator-selftests.c | ||
format_pieces-selftests.c | ||
function-view-selftests.c | ||
help-doc-selftests.c | ||
lookup_name_info-selftests.c | ||
main-thread-selftests.c | ||
memory-map-selftests.c | ||
memrange-selftests.c | ||
mkdir-recursive-selftests.c | ||
observable-selftests.c | ||
offset-type-selftests.c | ||
optional-selftests.c | ||
parse-connection-spec-selftests.c | ||
ptid-selftests.c | ||
rsp-low-selftests.c | ||
scoped_fd-selftests.c | ||
scoped_mmap-selftests.c | ||
scoped_restore-selftests.c | ||
string_view-selftests.c | ||
style-selftests.c | ||
tracepoint-selftests.c | ||
tui-selftests.c | ||
unpack-selftests.c | ||
utils-selftests.c | ||
vec-utils-selftests.c | ||
xml-utils-selftests.c |