On Thu, 2 Oct 2014 19:33:02 +0200
Lukas Slebodnik <lslebodn(a)redhat.com> wrote:
ehlo,
There is a warning with some version of gcc (4.9.1, 4.4.7).
Warning is not visible with gcc 4.8
In my opinion, variable "a" should be initialized every time if
"maps" is not NULL.
I agree that "a" should be intialized every time, in fact I do not
agree with your patch where you set it to be a volatile, it is not.
The main issue here is that the name and way this variable is used is
confusing.
A better way would be to define a locally in the first loop, and in the
function define a better name initialized to a negative value.
the name should probably be called something like base_attr_idx and
intialized as:
int base_attr_idx = 0;
and if the first part of the code finds the base_attr it is looking for
it would simply assing a to it (note we do away with "a" completely).
if (map) {
for (i = 1; i < attrs_num; i++) {
...
}
if (i < attrs_num) {
store = true;
base_attr_idx = i;
...
}
}
then the second for loop where you get the error would be change to:
for (ai = base_attr_idx; ai > 0 && ai < attrs_num; ai++) {
Simo.
src/providers/ldap/sdap.c: In function 'sdap_parse_entry':
src/providers/ldap/sdap.c:481:56: warning: 'a' may be used
uninitialized in this function [-Wmaybe-uninitialized]
for (ai = a; ai < attrs_num; ai++) {
^
src/providers/ldap/sdap.c:307:9: note: 'a' was declared here
int a, i, ret, ai;
^
CCLD libsss_ldap_common.la
You can also see warnin in koji build on fedora 21
https://kojipkgs.fedoraproject.org//packages/sssd/1.12.1/2.fc21/data/logs...
If you have better idea how to fix this warning I will be glad to
review your patch.
LS
--
Simo Sorce * Red Hat, Inc * New York