void Streader_set_memory_error(Streader* sr, const char* format, ...) { rassert(sr != NULL); rassert(format != NULL); va_list args; va_start(args, format); Error_set_desc_va_list( &sr->error, ERROR_MEMORY, "", sr->line, "", format, args); va_end(args); return; }
void Handle_set_error_( Handle* handle, Error_type type, Error_delay_type delay_type, const char* file, int line, const char* func, const char* message, ...) { rassert(type < ERROR_COUNT_); rassert(delay_type == ERROR_IMMEDIATE || delay_type == ERROR_VALIDATION); rassert(file != NULL); rassert(line >= 0); rassert(func != NULL); rassert(message != NULL); Error* error = ERROR_AUTO; va_list args; va_start(args, message); Error_set_desc_va_list(error, type, file, line, func, message, args); va_end(args); if (delay_type == ERROR_IMMEDIATE) Error_copy(&null_error, error); if (handle != NULL) { if (delay_type == ERROR_IMMEDIATE) Error_copy(&handle->error, error); else if (delay_type == ERROR_VALIDATION) Error_copy(&handle->validation_error, error); else rassert(false); } return; }