diff --git a/inc/qcbor/qcbor_encode.h b/inc/qcbor/qcbor_encode.h
index f6ae9b4..0171112 100644
--- a/inc/qcbor/qcbor_encode.h
+++ b/inc/qcbor/qcbor_encode.h
@@ -1990,7 +1990,6 @@
 static inline void
 QCBOREncode_AddTextToMap(QCBOREncodeContext *pMe, const char *szLabel, UsefulBufC Text)
 {
-   // Use _AddBuffer() because _AddSZString() is defined below, not above
    QCBOREncode_AddText(pMe, UsefulBuf_FromSZ(szLabel));
    QCBOREncode_AddText(pMe, Text);
 }
diff --git a/inc/qcbor/qcbor_spiffy_decode.h b/inc/qcbor/qcbor_spiffy_decode.h
index cbfbe00..ae66a3b 100644
--- a/inc/qcbor/qcbor_spiffy_decode.h
+++ b/inc/qcbor/qcbor_spiffy_decode.h
@@ -413,8 +413,8 @@
  QCBORDecode_GetUInt64Convert().
 */
 void QCBORDecode_GetUInt64ConvertAll(QCBORDecodeContext *pCtx,
-                                     uint32_t           uConvertTypes,
-                                     uint64_t          *puValue);
+                                     uint32_t            uConvertTypes,
+                                     uint64_t           *puValue);
 
 void QCBORDecode_GetUInt64ConvertAllInMapN(QCBORDecodeContext *pCtx,
                                            int64_t             nLabel,
@@ -443,7 +443,7 @@
  QCBOR_ERR_UNEXPECTED_TYPE error is set.
  */
 static void QCBORDecode_GetByteString(QCBORDecodeContext *pCtx,
-                                      UsefulBufC *pBytes);
+                                      UsefulBufC         *pBytes);
 
 static void QCBORDecode_GetByteStringInMapN(QCBORDecodeContext *pCtx,
                                             int64_t             nLabel,
@@ -467,7 +467,7 @@
  error is set.
 */
 static void QCBORDecode_GetTextString(QCBORDecodeContext *pCtx,
-                                      UsefulBufC *pText);
+                                      UsefulBufC         *pText);
 
 static void QCBORDecode_GetTextStringInMapN(QCBORDecodeContext *pCtx,
                                             int64_t             nLabel,
@@ -758,7 +758,7 @@
  processing error that is not a CBOR error. The specific details of
  the protocol processing error can be returned the call back context.
  */
-typedef QCBORError (*QCBORItemCallback)(void *pCallbackCtx,
+typedef QCBORError (*QCBORItemCallback)(void            *pCallbackCtx,
                                         const QCBORItem *pItem);
 
 
@@ -852,9 +852,9 @@
                                          double             *pdValue);
 
 static void QCBORDecode_GetDoubleConvertInMapN(QCBORDecodeContext *pCtx,
-                                               int64_t            nLabel,
-                                               uint32_t           uConvertTypes,
-                                               double            *pdValue);
+                                               int64_t             nLabel,
+                                               uint32_t            uConvertTypes,
+                                               double             *pdValue);
 
 static void QCBORDecode_GetDoubleConvertInMapSZ(QCBORDecodeContext *pCtx,
                                                 const char         *szLabel,
@@ -965,8 +965,8 @@
  @ref QCBOR_TYPE_DATE_EPOCH.
 */
 void QCBORDecode_GetEpochDate(QCBORDecodeContext *pCtx,
-                              uint8_t              uTagRequirement,
-                              int64_t             *pnTime);
+                              uint8_t             uTagRequirement,
+                              int64_t            *pnTime);
 
 void QCBORDecode_GetEpochDateInMapN(QCBORDecodeContext *pCtx,
                                     int64_t             nLabel,
@@ -1573,8 +1573,8 @@
 
 
 void QCBORDecode_GetUInt64Convert(QCBORDecodeContext *pMe,
-                                  uint32_t uConvertTypes,
-                                  uint64_t *puValue)
+                                  uint32_t            uConvertTypes,
+                                  uint64_t           *puValue)
 {
     QCBORItem Item;
     QCBORDecode_GetUInt64ConvertInternal(pMe, uConvertTypes, puValue, &Item);
@@ -1582,9 +1582,9 @@
 
 inline static void
 QCBORDecode_GetUInt64ConvertInMapN(QCBORDecodeContext *pMe,
-                                   int64_t            nLabel,
-                                   uint32_t           uConvertTypes,
-                                   uint64_t          *puValue)
+                                   int64_t             nLabel,
+                                   uint32_t            uConvertTypes,
+                                   uint64_t           *puValue)
 {
    QCBORItem Item;
    QCBORDecode_GetUInt64ConvertInternalInMapN(pMe,
@@ -1699,9 +1699,9 @@
 
 inline static void
 QCBORDecode_GetInt64ConvertInMapN(QCBORDecodeContext *pMe,
-                                  int64_t            nLabel,
-                                  uint32_t           uConvertTypes,
-                                  int64_t           *pnValue)
+                                  int64_t             nLabel,
+                                  uint32_t            uConvertTypes,
+                                  int64_t            *pnValue)
 {
    QCBORItem Item;
    QCBORDecode_GetInt64ConvertInternalInMapN(pMe,
@@ -1765,10 +1765,10 @@
 // Semi-private
 void
 QCBORDecode_GetDoubleConvertInternalInMapN(QCBORDecodeContext *pMe,
-                                           int64_t            nLabel,
-                                           uint32_t           uConvertTypes,
-                                           double            *pdValue,
-                                           QCBORItem         *pItem);
+                                           int64_t             nLabel,
+                                           uint32_t            uConvertTypes,
+                                           double             *pdValue,
+                                           QCBORItem          *pItem);
 
 // Semi-private
 void
@@ -1881,10 +1881,10 @@
 
 
 // Semi private
-QCBORError QCBORDecode_GetMIMEInternal(uint8_t     uTagRequirement,
-                                       const       QCBORItem *pItem,
-                                       UsefulBufC *pMessage,
-                                       bool       *pbIsTag257);
+QCBORError QCBORDecode_GetMIMEInternal(uint8_t           uTagRequirement,
+                                       const  QCBORItem *pItem,
+                                       UsefulBufC       *pMessage,
+                                       bool             *pbIsTag257);
 
 
 
@@ -1904,8 +1904,8 @@
 
 inline static void
 QCBORDecode_GetByteStringInMapN(QCBORDecodeContext *pMe,
-                           int64_t             nLabel,
-                           UsefulBufC         *pBstr)
+                                int64_t             nLabel,
+                                UsefulBufC         *pBstr)
 {
    const TagSpecification TagSpec =
       {
@@ -1918,8 +1918,8 @@
 
 inline static void
 QCBORDecode_GetByteStringInMapSZ(QCBORDecodeContext *pMe,
-                            const char         *szLabel,
-                            UsefulBufC         *pBstr)
+                                 const char         *szLabel,
+                                 UsefulBufC         *pBstr)
 {
    const TagSpecification TagSpec =
       {
@@ -1948,8 +1948,8 @@
 
 inline static void
 QCBORDecode_GetTextStringInMapN(QCBORDecodeContext *pMe,
-                          int64_t             nLabel,
-                          UsefulBufC         *pText)
+                                int64_t             nLabel,
+                                UsefulBufC         *pText)
 {
    // This TagSpec only matches text strings; it also should optimize down
    // to passing a 64-bit integer
@@ -1965,8 +1965,8 @@
 
 inline static void
 QCBORDecode_GetTextStringInMapSZ(QCBORDecodeContext *pMe,
-                           const               char *szLabel,
-                           UsefulBufC         *pText)
+                                 const               char *szLabel,
+                                 UsefulBufC         *pText)
 {
    const TagSpecification TagSpec =
       {
diff --git a/test/qcbor_decode_tests.c b/test/qcbor_decode_tests.c
index 26ed048..2780097 100644
--- a/test/qcbor_decode_tests.c
+++ b/test/qcbor_decode_tests.c
@@ -5906,16 +5906,15 @@
   array
      7
      8
-
  */
 
-static UsefulBufC foo(UsefulBuf ffo)
+static UsefulBufC EncodeBstrWrapTestData(UsefulBuf OutputBuffer)
 {
-   UsefulBufC Encoded;
+   UsefulBufC         Encoded;
    QCBOREncodeContext EC;
-   QCBORError uErr;
+   QCBORError         uErr;
 
-   QCBOREncode_Init(&EC, ffo);
+   QCBOREncode_Init(&EC, OutputBuffer);
 
    QCBOREncode_BstrWrap(&EC);
      QCBOREncode_OpenMap(&EC);
@@ -5949,34 +5948,34 @@
 
 int32_t EnterBstrTest()
 {
-   MakeUsefulBufOnStack(ffo, 100);
+   MakeUsefulBufOnStack(OutputBuffer, 100);
 
    QCBORDecodeContext DC;
 
-   QCBORDecode_Init(&DC, foo(ffo), 0);
+   QCBORDecode_Init(&DC, EncodeBstrWrapTestData(OutputBuffer), 0);
 
-   int64_t i1, i2, i3, i4, i5, i6, i7, i8;
+   int64_t n1, n2, n3, n4, n5, n6, n7, n8;
 
 
    QCBORDecode_EnterBstrWrapped(&DC, QCBOR_TAG_REQUIREMENT_NOT_A_TAG, NULL);
      QCBORDecode_EnterMap(&DC);
-       QCBORDecode_GetInt64InMapN(&DC, 100, &i1);
-       QCBORDecode_GetInt64InMapN(&DC, 200, &i2);
+       QCBORDecode_GetInt64InMapN(&DC, 100, &n1);
+       QCBORDecode_GetInt64InMapN(&DC, 200, &n2);
      QCBORDecode_ExitMap(&DC);
      QCBORDecode_EnterBstrWrapped(&DC, QCBOR_TAG_REQUIREMENT_NOT_A_TAG, NULL);
        QCBORDecode_EnterArray(&DC);
-         QCBORDecode_GetInt64(&DC, &i3);
+         QCBORDecode_GetInt64(&DC, &n3);
          QCBORDecode_EnterBstrWrapped(&DC, QCBOR_TAG_REQUIREMENT_NOT_A_TAG, NULL);
-           QCBORDecode_GetInt64(&DC, &i4);
+           QCBORDecode_GetInt64(&DC, &n4);
          QCBORDecode_ExitBstrWrapped(&DC);
-         QCBORDecode_GetInt64(&DC, &i5);
+         QCBORDecode_GetInt64(&DC, &n5);
        QCBORDecode_ExitArray(&DC);
      QCBORDecode_ExitBstrWrapped(&DC);
-     QCBORDecode_GetInt64(&DC, &i6);
+     QCBORDecode_GetInt64(&DC, &n6);
    QCBORDecode_ExitBstrWrapped(&DC);
    QCBORDecode_EnterArray(&DC);
-     QCBORDecode_GetInt64(&DC, &i7);
-     QCBORDecode_GetInt64(&DC, &i8);
+     QCBORDecode_GetInt64(&DC, &n7);
+     QCBORDecode_GetInt64(&DC, &n8);
    QCBORDecode_ExitArray(&DC);
 
    QCBORError uErr = QCBORDecode_Finish(&DC);
