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) {
