diff --git a/Src/DLT_Utilities.cpp b/Src/DLT_Utilities.cpp index fd38b3e..52ac622 100644 --- a/Src/DLT_Utilities.cpp +++ b/Src/DLT_Utilities.cpp @@ -35,7 +35,8 @@ void DLT_Log::clear(void) { DLT_Type::DLT_Msg_Node *p_target = this->Msg_List_Head; this->Msg_List_Head = this->Msg_List_Head->p_next; - free(p_target->Msg.payload_buffer); + if (p_target->Msg.payload_buffer != nullptr) + free(p_target->Msg.payload_buffer); free(p_target); } @@ -191,6 +192,12 @@ DLT_Type::DLT_Err DLT_Log::dlt_file_read_payload(FILE *p_file, DLT_Type::DLT_Msg if (Msg == nullptr) return DLT_Type::DLT_ERROR_NULL_POINTER; + if (Msg->payload_length == 0) + { + Msg->payload_buffer = nullptr; + return DLT_Type::DLT_ERROR_NONE; + } + // 读取Payload Msg->payload_buffer = (uint8_t *)malloc(Msg->payload_length); this->mem_use += Msg->payload_length; @@ -225,7 +232,7 @@ DLT_Type::DLT_Err DLT_Log::load_from_file(const char *file_name_str) DLT_Type::DLT_Err err = DLT_Type::DLT_ERROR_NONE; while (1) { - DLT_Type::DLT_Msg Msg; + DLT_Type::DLT_Msg Msg = {0}; err = dlt_file_read_header(p_file, &Msg); if (err != DLT_Type::DLT_ERROR_NONE)