Opened 8 years ago

Closed 11 months ago

#5101 closed defect (worksforme)

Variables used uninitialized in libavformat/utils.c

Reported by: Jeremy Huddleston Owned by:
Priority: minor Component: avformat
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

The following were observed when building N-77414-g484cc66 and should probably be fixed:

libavformat/utils.c:1896:9: warning: variable 'pos_min' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    if (st->index_entries) {
        ^~~~~~~~~~~~~~~~~
libavformat/utils.c:1929:53: note: uninitialized use occurs here
    pos = ff_gen_search(s, stream_index, target_ts, pos_min, pos_max, pos_limit,
                                                    ^~~~~~~
libavformat/utils.c:1896:5: note: remove the 'if' if its condition is always true
    if (st->index_entries) {
    ^~~~~~~~~~~~~~~~~~~~~~~
libavformat/utils.c:1880:5: note: variable 'pos_min' is declared here
    int64_t av_uninit(pos_min), av_uninit(pos_max), pos, pos_limit;
    ^
libavformat/utils.c:1918:13: warning: variable 'pos_max' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
        if (index >= 0) {
            ^~~~~~~~~~
libavformat/utils.c:1929:62: note: uninitialized use occurs here
    pos = ff_gen_search(s, stream_index, target_ts, pos_min, pos_max, pos_limit,
                                                             ^~~~~~~
libavformat/utils.c:1918:9: note: remove the 'if' if its condition is always true
        if (index >= 0) {
        ^~~~~~~~~~~~~~~~
libavformat/utils.c:1896:9: warning: variable 'pos_max' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    if (st->index_entries) {
        ^~~~~~~~~~~~~~~~~
libavformat/utils.c:1929:62: note: uninitialized use occurs here
    pos = ff_gen_search(s, stream_index, target_ts, pos_min, pos_max, pos_limit,
                                                             ^~~~~~~
libavformat/utils.c:1896:5: note: remove the 'if' if its condition is always true
    if (st->index_entries) {
    ^~~~~~~~~~~~~~~~~~~~~~~
libavformat/utils.c:1880:5: note: variable 'pos_max' is declared here
    int64_t av_uninit(pos_min), av_uninit(pos_max), pos, pos_limit;
    ^
3 warnings generated.

Change History (6)

comment:1 by Carl Eugen Hoyos, 8 years ago

Priority: normalminor
Version: unspecifiedgit-master

Both variables are not accessed if they are uninitialized and the compiler should be able to see this. Maybe the standard forbids to pass uninitialized values as function parameters?

comment:2 by Elon Musk, 8 years ago

Resolution: fixed
Status: newclosed

They are accessed if they are uninitialized.

comment:3 by Elon Musk, 8 years ago

Resolution: fixed
Status: closedreopened

They are accessed if they are uninitialized.

comment:4 by Hendrik, 8 years ago

The compiler seems to complain about passing an uninitialized variable to another function, but not actually checking if that function uses it under the given conditions.

Last I checked this code, it did not actually use these variables uninitialized, however the design might not be very easy to understand since it spans more then one function, and these variables are passed as arguments in between.

comment:5 by Carl Eugen Hoyos, 8 years ago

Isn't the question if the standard allows to pass uninitialized parameters?

comment:6 by Elon Musk, 11 months ago

Resolution: worksforme
Status: reopenedclosed

Looks like compiler does not complain any more for this file.

Note: See TracTickets for help on using tickets.