aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/bunzip.c4
-rw-r--r--lib/portability.h12
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/bunzip.c b/lib/bunzip.c
index 049dc02e..b7996983 100644
--- a/lib/bunzip.c
+++ b/lib/bunzip.c
@@ -111,9 +111,9 @@ static unsigned int get_bits(bunzip_data *bd, char bits_wanted)
// Decompress a block of text to intermediate buffer
int read_bunzip_data(bunzip_data *bd)
{
- struct group_data *hufGroup;
+ struct group_data *hufGroup GCC_BUG;
unsigned origPtr;
- int dbufCount, nextSym, dbufSize, groupCount, *base, *limit,
+ int dbufCount, nextSym, dbufSize, groupCount, *base GCC_BUG, *limit GCC_BUG,
selector, i, j, k, t, runPos, symCount, symTotal, nSelectors,
byteCount[256];
char uc, mtfSymbol[256], symToByte[256], *selectors;
diff --git a/lib/portability.h b/lib/portability.h
index 5aa4a0bf..9f3f1b78 100644
--- a/lib/portability.h
+++ b/lib/portability.h
@@ -25,3 +25,15 @@
#define SWAP_LE32(x) (x)
#define SWAP_LE64(x) (x)
#endif
+
+// Some versions of gcc produce spurious "may be uninitialized" warnings in
+// cases where it provably can't happen. Unfortunately, although this warning
+// is calculated and produced separately from the "is definitely used
+// uninitialized" warnings, there's no way to turn off the broken spurious "may
+// be" warnings without also turning off the non-broken "is" warnings.
+
+#if CFG_TOYBOX_DEBUG
+#define GCC_BUG =0
+#else
+#define GCC_BUG
+#endif