From 2816e0d150eb4972765702909042d54d61b0f041 Mon Sep 17 00:00:00 2001 From: Artem Chernyshev Date: Fri, 15 Nov 2019 11:24:19 +0300 Subject: [PATCH] Fixed parsing variadic length C array through script eval Previously it was working due to fallback to string conversion. --- src/imvue_element.h | 17 +++++++++++++++++ tests/unit/parser.cpp | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/imvue_element.h b/src/imvue_element.h index 900e4a4..257678c 100644 --- a/src/imvue_element.h +++ b/src/imvue_element.h @@ -351,6 +351,23 @@ namespace ImVue { return true; } + template + typename std::enable_if::value, bool>::type + read(Object& value, C** dest) + { + if(*dest) { + ImGui::MemFree(*dest); + *dest = NULL; + } + ImVector values; + for(Object::iterator iter = value.begin(); iter != value.end(); ++iter) { + values.push_back(iter.value.as()); + } + *dest = (C*)ImGui::MemAlloc(values.size_in_bytes()); + memcpy(*dest, values.Data, values.size_in_bytes()); + return true; + } + template typename std::enable_if::value, bool>::type read(Object& value, C* dest) diff --git a/tests/unit/parser.cpp b/tests/unit/parser.cpp index 0668c3f..c6d86b0 100644 --- a/tests/unit/parser.cpp +++ b/tests/unit/parser.cpp @@ -252,7 +252,7 @@ const char* dataBind = "