From ba3fe046295bc6e3064a3ddbac2332ad16d34179 Mon Sep 17 00:00:00 2001 From: Yuhong Guo Date: Sun, 10 Mar 2019 05:51:02 +0800 Subject: [PATCH] Fix message type to string crash (#4308) * Fix message string crash * Fix --- src/ray/raylet/raylet.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/ray/raylet/raylet.cc b/src/ray/raylet/raylet.cc index c5ce98b1c..3b0ebd5b6 100644 --- a/src/ray/raylet/raylet.cc +++ b/src/ray/raylet/raylet.cc @@ -9,8 +9,12 @@ namespace { -const std::vector GenerateEnumNames(const char *const *enum_names_ptr) { +const std::vector GenerateEnumNames(const char *const *enum_names_ptr, + int start_index, int end_index) { std::vector enum_names; + for (int i = 0; i < start_index; ++i) { + enum_names.push_back("EmptyMessageType"); + } size_t i = 0; while (true) { const char *name = enum_names_ptr[i]; @@ -20,13 +24,19 @@ const std::vector GenerateEnumNames(const char *const *enum_names_p enum_names.push_back(name); i++; } + RAY_CHECK(static_cast(end_index) == enum_names.size() - 1) + << "Message Type mismatch!"; return enum_names; } static const std::vector node_manager_message_enum = - GenerateEnumNames(ray::protocol::EnumNamesMessageType()); + GenerateEnumNames(ray::protocol::EnumNamesMessageType(), + static_cast(ray::protocol::MessageType::MIN), + static_cast(ray::protocol::MessageType::MAX)); static const std::vector object_manager_message_enum = - GenerateEnumNames(ray::object_manager::protocol::EnumNamesMessageType()); + GenerateEnumNames(ray::object_manager::protocol::EnumNamesMessageType(), + static_cast(ray::object_manager::protocol::MessageType::MIN), + static_cast(ray::object_manager::protocol::MessageType::MAX)); } namespace ray {