[postgis-tickets] [PostGIS] #5558: Compilation warning: uninitialized variable

PostGIS trac at osgeo.org
Fri Sep 29 05:17:55 PDT 2023


#5558: Compilation warning: uninitialized variable
--------------------------+---------------------------
 Reporter:  Laurenz Albe  |      Owner:  pramsey
     Type:  defect        |     Status:  new
 Priority:  medium        |  Milestone:  PostGIS 3.4.1
Component:  postgis       |    Version:  master
 Keywords:                |
--------------------------+---------------------------
 Building master, I get

 {{{
 In file included from mvt.h:40,
                  from mvt.c:30:
 mvt.c: In function ‘mvt_clip_and_validate_geos’:
 mvt.c:884:41: warning: ‘bgbox.flags’ may be used uninitialized [-Wmaybe-
 uninitialized]
   884 |                 FLAGS_SET_GEODETIC(bgbox.flags, 0);
 ../liblwgeom/liblwgeom.h:175:95: note: in definition of macro
 ‘FLAGS_SET_GEODETIC’
   175 | #define FLAGS_SET_GEODETIC(flags, value) ((flags) = (value) ?
 ((flags) | LWFLAG_GEODETIC) : ((flags) & ~LWFLAG_GEODETIC))
       |
 ^~~~~
 mvt.c:881:22: note: ‘bgbox’ declared here
   881 |                 GBOX bgbox;
       |                      ^~~~~
 }}}

 Indeed, in `postgis/mvt.c`, `bgbox.flag` is not initialized:

 {{{#!c
 GBOX bgbox;
 bgbox.xmax = bgbox.ymax = (double)extent + (double)buffer;
 bgbox.xmin = bgbox.ymin = -(double)buffer;
 FLAGS_SET_GEODETIC(bgbox.flags, 0);
 }}}

 I guess it should be initialized to zero, as in the following patch:

 {{{#!diff
 diff --git a/postgis/mvt.c b/postgis/mvt.c
 index 8aa916052..64bb28edb 100644
 --- a/postgis/mvt.c
 +++ b/postgis/mvt.c
 @@ -881,6 +881,7 @@ mvt_clip_and_validate_geos(LWGEOM *lwgeom, uint8_t
 basic_type, uint32_t extent,
         GBOX bgbox;
         bgbox.xmax = bgbox.ymax = (double)extent + (double)buffer;
         bgbox.xmin = bgbox.ymin = -(double)buffer;
 +       bgbox.flags = 0;
         FLAGS_SET_GEODETIC(bgbox.flags, 0);

         ng = mvt_unsafe_clip_by_box(ng, &bgbox);
 }}}
-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/5558>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list