From 54653ea3163ce4f037a7e3dba2e234edf4628a4a Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 16 Jun 2024 02:16:54 +0800 Subject: [PATCH] Fix crash caused by wrong pointer used after VtxBuffer resized during 3d navigator rendering (#5719) --- src/imguizmo/ImGuizmo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/imguizmo/ImGuizmo.cpp b/src/imguizmo/ImGuizmo.cpp index 26f4239d9d..1acf8b63e4 100644 --- a/src/imguizmo/ImGuizmo.cpp +++ b/src/imguizmo/ImGuizmo.cpp @@ -2941,7 +2941,7 @@ namespace IMGUIZMO_NAMESPACE if (iPass) { // Draw face label ImDrawList* drawList = gContext.mDrawList; - ImDrawVert* vtx_write_start = drawList->_VtxWritePtr; + int vtx_write_start = drawList->VtxBuffer.Size; const auto label = gContext.mStyle.FaceLabels[iFace]; ImVec2 labelSize = ImGui::CalcTextSize(label); @@ -2978,7 +2978,7 @@ namespace IMGUIZMO_NAMESPACE break; } - for (auto v = vtx_write_start; v < vtx_write_end; v++) { + for (auto v = (drawList->VtxBuffer.Data + vtx_write_start); v < vtx_write_end; v++) { auto pp = ((v->pos - labelOrigin) * scaleFactor * invert2 + ImVec2{0.5, 0.5}) * 2.f; vec_t pt = tdx * pp.x + tdy * pp.y; v->pos = worldToPos((pt + origin) * 0.5 * invert, res, position, size);