Test with gcc 8 and fix a few minor warnings and issues
diff --git a/Makefile.gcc8 b/Makefile.gcc8
new file mode 100644
index 0000000..50d483b
--- /dev/null
+++ b/Makefile.gcc8
@@ -0,0 +1,64 @@
+#  Copyright (c) 2018, Laurence Lundblade.
+#  All rights reserved.
+#  
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#     * The name "Laurence Lundblade" may not be used to
+#       endorse or promote products derived from this software without
+#       specific prior written permission.
+#  
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+CFLAGS=-I inc -I test -Os -Wall -Werror -pedantic-errors -Wextra -Wshadow -Wparentheses -xc -std=c99 -Werror=maybe-uninitialized
+CC=/usr/local/bin/gcc-8
+
+QCBOR_OBJ=src/UsefulBuf.o src/qcbor_encode.o src/qcbor_decode.o src/ieee754.o 
+
+TEST_OBJ=test/UsefulBuf_Tests.o test/qcbor_encode_tests.o test/qcbor_decode_tests.o test/run_tests.o \
+  test/float_tests.o test/half_to_double_from_rfc7049.o 
+
+qcbortest: libqcbor.a $(TEST_OBJ) cmd_line_main.o
+	$(CC) -o $@ $^  libqcbor.a
+
+qcbormin: libqcbor.a min_use_main.o
+	$(CC) -dead_strip -o $@ $^ libqcbor.a
+
+libqcbor.a: $(QCBOR_OBJ)
+	ar -r $@ $^
+
+src/UsefulBuf.o:	inc/UsefulBuf.h
+src/qcbor_decode.o:	inc/UsefulBuf.h inc/qcbor.h src/ieee754.h
+src/qcbor_encode.o:	inc/UsefulBuf.h inc/qcbor.h src/ieee754.h
+src/iee754.o:	src/ieee754.h 
+
+test/run_tests.o:	test/UsefulBuf_Tests.h test/float_tests.h test/run_tests.h test/qcbor_encode_tests.h\
+    test/qcbor_decode_tests.h 
+test/UsefulBuf_Tests.o:	test/UsefulBuf_Tests.h inc/qcbor.h inc/UsefulBuf.h
+test/qcbor_encode_tests.o:	test/qcbor_encode_tests.h inc/qcbor.h inc/UsefulBuf.h
+test/qcbor_decode_tests.o:	test/qcbor_decode_tests.h inc/qcbor.h inc/UsefulBuf.h
+test/float_tests.o:	inc/qcbor.h inc/UsefulBuf.h test/float_tests.h test/half_to_double_from_rfc7049.h
+test/half_to_double_from_rfc7049.o:	test/half_to_double_from_rfc7049.h
+
+cmd_line_main.o:	test/run_tests.h inc/qcbor.h
+
+min_use_main.o:		inc/qcbor.h inc/UsefulBuf.h
+
+clean:
+	rm -f $(QCBOR_OBJ2) $(TEST_OBJ) libqcbor.a
diff --git a/inc/qcbor.h b/inc/qcbor.h
index 7b684be..897346c 100644
--- a/inc/qcbor.h
+++ b/inc/qcbor.h
@@ -524,7 +524,8 @@
 /**
  The maximum number of items in a single array or map when encoding of decoding.
 */
-#define QCBOR_MAX_ITEMS_IN_ARRAY (UINT16_MAX) // This value is 65,535 a lot of items for an array
+// -1 is because the value UINT16_MAX is used to track indefinite length arraysUINT16_MAX
+#define QCBOR_MAX_ITEMS_IN_ARRAY (UINT16_MAX-1)
 
 /**
  The maximum nesting of arrays and maps when encoding or decoding. The
@@ -2113,26 +2114,26 @@
 void  QCBOREncode_AddType7(QCBOREncodeContext *pCtx, size_t uSize, uint64_t uNum);
 
 
-static void inline QCBOREncode_AddInt64ToMap(QCBOREncodeContext *pCtx, const char *szLabel, int64_t uNum)
+static inline void QCBOREncode_AddInt64ToMap(QCBOREncodeContext *pCtx, const char *szLabel, int64_t uNum)
 {
    QCBOREncode_AddBuffer(pCtx, CBOR_MAJOR_TYPE_TEXT_STRING, UsefulBuf_FromSZ(szLabel)); // AddSZString not defined yet
    QCBOREncode_AddInt64(pCtx, uNum);
 }
 
-static void inline QCBOREncode_AddInt64ToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, int64_t uNum)
+static inline void QCBOREncode_AddInt64ToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, int64_t uNum)
 {
    QCBOREncode_AddInt64(pCtx, nLabel);
    QCBOREncode_AddInt64(pCtx, uNum);
 }
 
 
-static void inline QCBOREncode_AddUInt64ToMap(QCBOREncodeContext *pCtx, const char *szLabel, uint64_t uNum)
+static inline void QCBOREncode_AddUInt64ToMap(QCBOREncodeContext *pCtx, const char *szLabel, uint64_t uNum)
 {
    QCBOREncode_AddBuffer(pCtx, CBOR_MAJOR_TYPE_TEXT_STRING, UsefulBuf_FromSZ(szLabel)); // AddSZString not defined yet
    QCBOREncode_AddUInt64(pCtx, uNum);
 }
 
-static void inline QCBOREncode_AddUInt64ToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, uint64_t uNum)
+static inline void QCBOREncode_AddUInt64ToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, uint64_t uNum)
 {
    QCBOREncode_AddInt64(pCtx, nLabel);
    QCBOREncode_AddUInt64(pCtx, uNum);
@@ -2175,13 +2176,13 @@
 }
 
 
-static void inline QCBOREncode_AddDoubleToMap(QCBOREncodeContext *pCtx, const char *szLabel, double dNum)
+static inline void QCBOREncode_AddDoubleToMap(QCBOREncodeContext *pCtx, const char *szLabel, double dNum)
 {
    QCBOREncode_AddSZString(pCtx, szLabel);
    QCBOREncode_AddDouble(pCtx, dNum);
 }
 
-static void inline QCBOREncode_AddDoubleToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, double dNum)
+static inline void QCBOREncode_AddDoubleToMapN(QCBOREncodeContext *pCtx, int64_t nLabel, double dNum)
 {
    QCBOREncode_AddInt64(pCtx, nLabel);
    QCBOREncode_AddDouble(pCtx, dNum);
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index 2c301b6..8d216c7 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -536,6 +536,7 @@
             nReturn = QCBOR_ERR_INVALID_CBOR;
             goto Done;
          }
+         /* FALLTHROUGH */
          // fall through intentionally
 
       default: // 0-19
diff --git a/test/qcbor_decode_tests.c b/test/qcbor_decode_tests.c
index 021c150..d71ebd5 100644
--- a/test/qcbor_decode_tests.c
+++ b/test/qcbor_decode_tests.c
@@ -567,9 +567,10 @@
    uint8_t *pEncoded;
    size_t  nEncodedLen;
 
-   int64_t i1, i2;
-   size_t i3, i4;
-   const uint8_t *s3, *s4;
+   int64_t i1=0, i2=0;
+   size_t i3=0, i4=0;
+   const uint8_t *s3= (uint8_t *)"";
+   const uint8_t *s4= (uint8_t *)"";
 
 
    if(CreateSimpleArray(23, 6000, &pEncoded, &nEncodedLen) < 0) {