That should fix the crash on gcc
diff --git a/src/Cose.c b/src/Cose.c
index 7524ec0..9cbac96 100644
--- a/src/Cose.c
+++ b/src/Cose.c
@@ -34,7 +34,6 @@
 
 	pobj->m_cborRoot = pobj->m_cbor = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA &errState);
 	CHECK_CONDITION_CBOR(pobj->m_cbor != NULL, errState);
-	pobj->m_cborRoot = NULL;
 	pobj->m_ownMsg = 1;
 
 #ifdef TAG_IN_ARRAY
@@ -53,13 +52,13 @@
 	CHECK_CONDITION_CBOR(_COSE_array_replace(pobj, pobj->m_unprotectMap, INDEX_UNPROTECTED, CBOR_CONTEXT_PARAM_COMMA &errState), errState);
 	pobj->m_ownUnprotectedMap = false;
 
-	/*
+	
 	if (!(flags & COSE_INIT_FLAGS_NO_CBOR_TAG)) {
 		cn_cbor_errback cbor_error;
 		cn_cbor * cn = cn_cbor_tag_create(msgType, pobj->m_cborRoot, CBOR_CONTEXT_PARAM_COMMA &cbor_error);
 		CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
 		pobj->m_cborRoot = cn;
-	}*/
+	}
 
 	pobj->m_refCount = 1;
 
diff --git a/src/Recipient.c b/src/Recipient.c
index 3f8ea04..e5cd61c 100644
--- a/src/Recipient.c
+++ b/src/Recipient.c
@@ -38,7 +38,7 @@
 	COSE_RecipientInfo * pobj = (COSE_RecipientInfo *)COSE_CALLOC(1, sizeof(COSE_RecipientInfo), context);
 	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
 
-	if (!_COSE_Init(flags, &pobj->m_encrypt.m_message, COSE_recipient_object, CBOR_CONTEXT_PARAM_COMMA perr)) {
+	if (!_COSE_Init(flags | COSE_INIT_FLAGS_NO_CBOR_TAG, &pobj->m_encrypt.m_message, COSE_recipient_object, CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Recipient_Free(pobj);
 		return NULL;
 	}
diff --git a/src/SignerInfo.c b/src/SignerInfo.c
index 5169887..8374d6f 100644
--- a/src/SignerInfo.c
+++ b/src/SignerInfo.c
@@ -67,7 +67,7 @@
 		return NULL;
 	}
 
-	if (!_COSE_Init(0, &pobj->m_message, COSE_recipient_object, CBOR_CONTEXT_PARAM_COMMA perror)) {
+	if (!_COSE_Init(COSE_INIT_FLAGS_NO_CBOR_TAG, &pobj->m_message, COSE_recipient_object, CBOR_CONTEXT_PARAM_COMMA perror)) {
 		_COSE_SignerInfo_Free(pobj);
 		COSE_FREE(pobj, context);
 		return NULL;
diff --git a/src/cose_int.h b/src/cose_int.h
index fb82337..b51fcf8 100644
--- a/src/cose_int.h
+++ b/src/cose_int.h
@@ -197,8 +197,8 @@
 //
 //  Debugging Items
 
-//#define DO_ASSERT assert(false);
-#define DO_ASSERT
+#define DO_ASSERT assert(false);
+//#define DO_ASSERT
 #define CHECK_CONDITION(condition, error) { if (!(condition)) { DO_ASSERT; if (perr != NULL) {perr->err = error;} goto errorReturn;}}
 #define FAIL_CONDITION(error) { DO_ASSERT; if (perr != NULL) {perr->err = error;} goto errorReturn;}
 #define CHECK_CONDITION_CBOR(condition, error) { if (!(condition)) { DO_ASSERT; if (perr != NULL) {perr->err = _MapFromCBOR(error);} goto errorReturn;}}
diff --git a/test/test.c b/test/test.c
index 60f6014..6220068 100644
--- a/test/test.c
+++ b/test/test.c
@@ -792,9 +792,15 @@
 		RunCorners();
 	}
 	else {
+#ifdef USE_CBOR_CONTEXT
+		allocator = CreateContext(-1);
+#endif
 		MacMessage();
 		SignMessage();
 		EncryptMessage();
+#ifdef USE_CBOR_CONTEXT
+		FreeContext(allocator);
+#endif
 	}
 
 	if (CFails > 0) fprintf(stderr, "Failed %d tests\n", CFails);