From 8abf1313aa627b8d4479c7854f649d05b7b0ba12 Mon Sep 17 00:00:00 2001 From: omar Date: Fri, 31 May 2019 11:35:42 +0200 Subject: [PATCH] ImDrawList: Fix broken channel splitting (another issue when the first channel is empty) (#2591) + fixed warnings with newer VS --- imgui_draw.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/imgui_draw.cpp b/imgui_draw.cpp index 5e9684504..79d26b670 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -47,6 +47,7 @@ Index of this file: // Visual Studio warnings #ifdef _MSC_VER +#pragma warning (disable: 4127) // condition expression is constant #pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff) #pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen #endif @@ -565,13 +566,13 @@ void ImDrawList::ChannelsMerge() return; ChannelsSetCurrent(0); - if (CmdBuffer.Size && CmdBuffer.back().ElemCount == 0) + if (CmdBuffer.Size != 0 && CmdBuffer.back().ElemCount == 0) CmdBuffer.pop_back(); // Calculate our final buffer sizes. Also fix the incorrect IdxOffset values in each command. int new_cmd_buffer_count = 0; int new_idx_buffer_count = 0; - int idx_offset = CmdBuffer.back().IdxOffset + CmdBuffer.back().ElemCount; + int idx_offset = (CmdBuffer.Size != 0) ? (CmdBuffer.back().IdxOffset + CmdBuffer.back().ElemCount) : 0; for (int i = 1; i < _ChannelsCount; i++) { ImDrawChannel& ch = _Channels[i];