[alsa-devel] Compiler warning - overriding codec compress type
Clemens Ladisch
clemens at ladisch.de
Mon Apr 18 11:25:43 CEST 2011
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=3110b8b0206cba978d95895723a3d901fb0f738d
Regards,
Clemens
More information about the Alsa-devel
mailing list