Patrick Lai wrote:
I got a compiler warning soc-core.c: In function 'snd_soc_instantiate_cards' warning: 'compress_type' may be used uninitialized in this function. In reality, compress_type is defined as local variable in snd_soc_instantiate_card().
Please note that this warning is merely a tool to find errors in the code; the word "may" indicates that the compilter isn't sure about this.
I think the fix should look like the following:
list_for_each_entry(codec, &codec_list, list) { if (codec->cache_init) continue;
compress_type = 0; /* check to see if we need to override the compress_type */ for (i = 0; i < card->num_configs; ++i) { codec_conf = &card->codec_conf[i];
When the for loop does not find an override, the following if() will jump out of the outer list_for_each_entry loop before the compress_type could be used, so it is not actually necessary to initialize this variable; a better way would be to use uninitialized_var.
My kernel version is 2.6.38. Has the warning being addressed in 2.6.39 or 2.6.40 patches?
... and an even better way is to simplify the logic: http://git.alsa-project.org/?p=alsa-kernel.git;a=commitdiff;h=3110b8b0206cba...
Regards, Clemens