When compiling with -fanalyzer and including gl_anylinked_list2.h I
see this:
In file included from gl_linked_list.c:29:
gl_anylinked_list2.h: In function 'gl_linked_iterator':
gl_anylinked_list2.h:952:10: warning: use of uninitialized value 'result.count'
[CWE-457] [-Wanalyzer-use-of-uninitialized-value]
952 | return result;
| ^~~~~~
'gl_linked_iterator': events 1-3
|
| 940 | gl_list_iterator_t result;
| | ^~~~~~
| | |
| | (1) region created on stack here
| | (2) capacity: 8 bytes
|......
| 952 | return result;
| | ~~~~~~
| | |
| | (3) use of uninitialized value 'result.count' here
Here is the function that it is warning about:
static gl_list_iterator_t _GL_ATTRIBUTE_PURE
gl_linked_iterator (gl_list_t list)
{
gl_list_iterator_t result;
result.vtable = list->base.vtable;
result.list = list;
result.p = list->root.next;
result.q = &list->root;
#if defined GCC_LINT || defined lint
result.i = 0;
result.j = 0;
result.count = 0;
#endif
return result;
}
I couldn't find the reasoning why these were hidden behind 'lint' [1].
But my instinct tells me these initializations should be done
unconditionally so undefined behavior is avoided.
Should these lint checks be removed or am I missing something?
[1]
https://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/gl_anylinked_list2.h?id=a42a50dc6f5c48c557920c21c8f05d31f26fea73
Collin