C struct now contains an additonal char* pointer, which can be either NULL in case there is no error, or a buffer containing the error message. It's the responsability of destructor function to free that memory.