Skip to content

alsa: fix "`now.tv_sec` maybe used uninitialized" warnings

Konstantin Kharlamov requested to merge Hi-Angel/pipewire:fix-warnings into master

While building in release mode, there is a number of warnings like this:

In file included from ../spa/include/spa/utils/result.h:37,
                 from ../spa/plugins/alsa/alsa-seq.c:35:
In function ‘set_timers’,
    inlined from ‘do_reassign_follower’ at ../spa/plugins/alsa/alsa-seq.c:909:2:
../spa/include/spa/utils/defs.h:191:39: warning: ‘now.tv_sec’ may be used uninitialized [-Wmaybe-uninitialized]
  191 | #define SPA_TIMESPEC_TO_NSEC(ts) ((ts)->tv_sec * SPA_NSEC_PER_SEC + (ts)->tv_nsec)
      |                                   ~~~~^~~~~~~~
../spa/plugins/alsa/alsa-seq.c:840:28: note: in expansion of macro ‘SPA_TIMESPEC_TO_NSEC’
  840 |         state->next_time = SPA_TIMESPEC_TO_NSEC(&now);
      |                            ^~~~~~~~~~~~~~~~~~~~
../spa/plugins/alsa/alsa-seq.c: In function ‘do_reassign_follower’:
../spa/plugins/alsa/alsa-seq.c:836:25: note: ‘now’ declared here
  836 |         struct timespec now;
      |                         ^~~

The reason for these warnings is that spa_system_clock_gettime() may fail if a version check fails, but the code in question didn't check for such possible fail. If it failed, then execution would continue, and the arguments that were passed to the macro will be used uninitialized.

Fix this by checking whether function succeeded.

Edited by Konstantin Kharlamov

Merge request reports