mpack_error_t mpack_reader_destroy(mpack_reader_t* reader) { // clean up tracking, asserting if we're not already in an error state #if MPACK_READ_TRACKING mpack_reader_flag_if_error(reader, mpack_track_destroy(&reader->track, mpack_reader_error(reader) != mpack_ok)); #endif if (reader->teardown) reader->teardown(reader); reader->teardown = NULL; return reader->error; }
mpack_error_t mpack_writer_destroy(mpack_writer_t* writer) { // clean up tracking, asserting if we're not already in an error state #if MPACK_WRITE_TRACKING mpack_track_destroy(&writer->track, writer->error != mpack_ok); #endif // flush any outstanding data if (mpack_writer_error(writer) == mpack_ok && writer->used != 0 && writer->flush != NULL) { writer->flush(writer, writer->buffer, writer->used); writer->flush = NULL; } if (writer->teardown) { writer->teardown(writer); writer->teardown = NULL; } return writer->error; }