Browse Source

InputText: fix buffer modifications in callbacks while using resize callback (#4784)

Regressed by 5ac25e7c7 (#4762)
ocornut 3 years ago
parent
commit
eea836135a
1 changed files with 2 additions and 1 deletions
  1. 2 1
      imgui_widgets.cpp

+ 2 - 1
imgui_widgets.cpp

@@ -4510,7 +4510,8 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
                     callback(&callback_data);
                     callback(&callback_data);
 
 
                     // Read back what user may have modified
                     // Read back what user may have modified
-                    IM_ASSERT(callback_data.Buf == callback_buf);  // Invalid to modify those fields
+                    callback_buf = is_readonly ? buf : state->TextA.Data; // Pointer may have been invalidated by a resize callback
+                    IM_ASSERT(callback_data.Buf == callback_buf);         // Invalid to modify those fields
                     IM_ASSERT(callback_data.BufSize == state->BufCapacityA);
                     IM_ASSERT(callback_data.BufSize == state->BufCapacityA);
                     IM_ASSERT(callback_data.Flags == flags);
                     IM_ASSERT(callback_data.Flags == flags);
                     const bool buf_dirty = callback_data.BufDirty;
                     const bool buf_dirty = callback_data.BufDirty;