]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[util] Avoid compiler warning on gcc 4.6
authorMichael Brown <mcb30@ipxe.org>
Tue, 3 Jul 2012 17:47:50 +0000 (18:47 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 3 Jul 2012 17:58:43 +0000 (18:58 +0100)
Commit 196751c ("[build] Enable warnings when building utilities")
revealed a previously hidden compiler warning in util/nrv2b.c
regarding an out-of-bounds array subscript in the code

    #if defined(SWD_BEST_OFF)
        if (s->best_pos[2] == 0)
            s->best_pos[2] = key + 1;
    #endif

where best_pos[] is defined by

    #define SWD_BEST_OFF 1

    #if defined(SWD_BEST_OFF)
        unsigned int best_off[ SWD_BEST_OFF ];
        unsigned int best_pos[ SWD_BEST_OFF ];
    #endif

With SWD_BEST_OFF set to 1, it can be proven that all code paths
referring to s->best_off[] and s->best_pos[] will never be executed,
with the exception of the two lines above.  Since these two lines
alone can have no effect on execution, we can safely undefine
SWD_BEST_OFF.

Verified by comparing md5sums of bin/undionly.kpxe before and after
the change.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/util/nrv2b.c

index cbb94c0ebd655bb04b424cf337990427447864f0..031f5d9cb4a2c2560fb0a5ed2d2489b6f15ae2a4 100644 (file)
@@ -209,7 +209,7 @@ struct ucl_compress
 
 #define SWD_HSIZE      16384
 #define SWD_MAX_CHAIN  2048
-#define SWD_BEST_OFF    1
+#undef SWD_BEST_OFF
 
 #define HEAD3(b,p) \
     (((0x9f5f*(((((uint32_t)b[p]<<5)^b[p+1])<<5)^b[p+2]))>>5) & (SWD_HSIZE-1))