diff --git a/src/UsefulBuf.c b/src/UsefulBuf.c
index 8cb8c49..282b6ad 100644
--- a/src/UsefulBuf.c
+++ b/src/UsefulBuf.c
@@ -70,7 +70,7 @@
     
    memcpy((uint8_t *)Dest.ptr + uOffset, Src.ptr, Src.len);
     
-   return((UsefulBufC){Dest.ptr, Src.len + uOffset});
+   return (UsefulBufC){Dest.ptr, Src.len + uOffset};
 }
 
 
@@ -277,7 +277,7 @@
       return NULLUsefulBufC;
    }
     
-   return(UsefulBufC){me->UB.ptr,me->data_len};
+   return (UsefulBufC){me->UB.ptr,me->data_len};
 }
 
 
@@ -288,7 +288,7 @@
  */
 UsefulBufC UsefulOutBuf_CopyOut(UsefulOutBuf *me, UsefulBuf pDest)
 {
-   UsefulBufC Tmp = UsefulOutBuf_OutUBuf(me);
+   const UsefulBufC Tmp = UsefulOutBuf_OutUBuf(me);
    if(UsefulBuf_IsNULLC(Tmp)) {
       return NULLUsefulBufC;
    }
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index 1a923f7..8a1b151 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -560,7 +560,7 @@
    // Stack usage: UsefulBuf 2, int/ptr 1  40
    QCBORError nReturn = QCBOR_SUCCESS;
    
-   UsefulBufC Bytes = UsefulInputBuf_GetUsefulBuf(pUInBuf, uStrLen);
+   const UsefulBufC Bytes = UsefulInputBuf_GetUsefulBuf(pUInBuf, uStrLen);
    if(UsefulBuf_IsNULLC(Bytes)) {
       // Failed to get the bytes for this string item
       nReturn = QCBOR_ERR_HIT_END;
@@ -596,7 +596,7 @@
       return QCBOR_ERR_BAD_OPT_TAG;
    }
    
-   UsefulBufC Temp              = pDecodedItem->val.string;
+   const UsefulBufC Temp        = pDecodedItem->val.string;
    pDecodedItem->val.dateString = Temp;
    pDecodedItem->uDataType      = QCBOR_TYPE_DATE_STRING;
    return QCBOR_SUCCESS;
@@ -612,7 +612,7 @@
    if(pDecodedItem->uDataType != QCBOR_TYPE_BYTE_STRING) {
       return QCBOR_ERR_BAD_OPT_TAG;
    }
-   UsefulBufC Temp          = pDecodedItem->val.string;
+   const UsefulBufC Temp    = pDecodedItem->val.string;
    pDecodedItem->val.bigNum = Temp;
    pDecodedItem->uDataType  = pDecodedItem->uTagBits & QCBOR_TAGFLAG_POS_BIGNUM ? QCBOR_TYPE_POSBIGNUM : QCBOR_TYPE_NEGBIGNUM;
    return QCBOR_SUCCESS;
diff --git a/src/qcbor_encode.c b/src/qcbor_encode.c
index 99eaafd..a99da1f 100644
--- a/src/qcbor_encode.c
+++ b/src/qcbor_encode.c
@@ -495,8 +495,8 @@
          // on any subsequent calls to this function because of the
          // InsertEncodedTypeAndNumber() call that slides data to the right.
          if(pWrappedCBOR) {
-            UsefulBufC PartialResult = UsefulOutBuf_OutUBuf(&(me->OutBuf));
-            size_t uBstrLen = UsefulOutBuf_GetEndPosition(&(me->OutBuf)) - uEndPosition;
+            const UsefulBufC PartialResult = UsefulOutBuf_OutUBuf(&(me->OutBuf));
+            const size_t uBstrLen = UsefulOutBuf_GetEndPosition(&(me->OutBuf)) - uEndPosition;
             *pWrappedCBOR = UsefulBuf_Tail(PartialResult, uInsertPosition+uBstrLen);
          }
          Nesting_Decrease(&(me->nesting));
