QCBOREncode_Finish sets internal error state (#218)
Addresses #217
This makes it so GetErrorState() called *after* Finish() behaves as expected. It will return the error detected in Finish().
* QCBOREncode_Finish sets internal error state
* More testing
---------
Co-authored-by: Laurence Lundblade <lgl@securitytheory.com>
diff --git a/src/qcbor_encode.c b/src/qcbor_encode.c
index 72e6800..fa3486e 100644
--- a/src/qcbor_encode.c
+++ b/src/qcbor_encode.c
@@ -1140,15 +1140,13 @@
QCBORError
QCBOREncode_Finish(QCBOREncodeContext *pMe, UsefulBufC *pEncodedCBOR)
{
- QCBORError uReturn = QCBOREncode_GetErrorState(pMe);
-
- if(uReturn != QCBOR_SUCCESS) {
+ if(QCBOREncode_GetErrorState(pMe) != QCBOR_SUCCESS) {
goto Done;
}
#ifndef QCBOR_DISABLE_ENCODE_USAGE_GUARDS
if(Nesting_IsInNest(&(pMe->nesting))) {
- uReturn = QCBOR_ERR_ARRAY_OR_MAP_STILL_OPEN;
+ pMe->uError = QCBOR_ERR_ARRAY_OR_MAP_STILL_OPEN;
goto Done;
}
#endif /* QCBOR_DISABLE_ENCODE_USAGE_GUARDS */
@@ -1156,7 +1154,7 @@
*pEncodedCBOR = UsefulOutBuf_OutUBuf(&(pMe->OutBuf));
Done:
- return uReturn;
+ return pMe->uError;
}