xloginsert.c hole_length warning on gcc 4.8.3

Поиск
Список
Период
Сортировка
От Tomas Vondra
Тема xloginsert.c hole_length warning on gcc 4.8.3
Дата
Msg-id 55037532.7050101@2ndquadrant.com
обсуждение исходный текст
Ответы Re: xloginsert.c hole_length warning on gcc 4.8.3  (Fujii Masao <masao.fujii@gmail.com>)
Список pgsql-hackers
Hi there,

with gcc 4.8.3, I'm getting this warning in xloginsert.c:

-------------------------
xloginsert.c: In function ‘XLogInsert’:
xloginsert.c:668:20: warning: ‘hole_length’ may be used uninitialized in
this function [-Wmaybe-uninitialized]
    if (hole_length != 0 && is_compressed)
                    ^
xloginsert.c:497:10: note: ‘hole_length’ was declared here
   uint16 hole_length;
-------------------------

The compiler seems to be confused probably because the code is
structured like this:

  {
     uint16    hole_length;
     uint16    hole_offset;

     if (needs_backup)
     {
         ... initialize hole_length/hole_offset ...
     }

     if (needs_data)
     {
         ...
     }

     if (needs_backup)
     {
         ... use hole_length/hole_offset ...
     }
  }

and does not realize the two blocks referencing the variables use the
same condition.

Initializing the variables at the very beginning (and simplifying the
first block a bit) seems like a good fix - patch attached.



--
Tomas Vondra                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Josh Berkus
Дата:
Сообщение: Re: Regarding pg_stat_statements
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)