Pārlūkot izejas kodu

Error Handling, Tables: TableGetSortSpecs() silently return NULL when no table (matching most other table getters). TableSetBgColor() uses IM_ASSERT_USER_ERROR.

ocornut 2 nedēļas atpakaļ
vecāks
revīzija
79d88e2d0b
2 mainītis faili ar 9 papildinājumiem un 3 dzēšanām
  1. 3 0
      docs/CHANGELOG.txt
  2. 6 3
      imgui_tables.cpp

+ 3 - 0
docs/CHANGELOG.txt

@@ -43,6 +43,9 @@ Breaking Changes:
 
 Other Changes:
 
+- Error Handling: minor improvements to error handling for TableGetSortSpecs()
+  and TableSetBgColor() calls. (#1651, #8499)
+
 
 -----------------------------------------------------------------------
  VERSION 1.92.1 (Released 2025-07-09)

+ 6 - 3
imgui_tables.cpp

@@ -1825,6 +1825,11 @@ void ImGui::TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n
     ImGuiContext& g = *GImGui;
     ImGuiTable* table = g.CurrentTable;
     IM_ASSERT(target != ImGuiTableBgTarget_None);
+    if (table == NULL)
+    {
+        IM_ASSERT_USER_ERROR(table != NULL, "Call should only be done while in BeginTable() scope!");
+        return;
+    }
 
     if (color == IM_COL32_DISABLE)
         color = 0;
@@ -2876,9 +2881,7 @@ ImGuiTableSortSpecs* ImGui::TableGetSortSpecs()
 {
     ImGuiContext& g = *GImGui;
     ImGuiTable* table = g.CurrentTable;
-    IM_ASSERT(table != NULL);
-
-    if (!(table->Flags & ImGuiTableFlags_Sortable))
+    if (table == NULL || !(table->Flags & ImGuiTableFlags_Sortable))
         return NULL;
 
     // Require layout (in case TableHeadersRow() hasn't been called) as it may alter IsSortSpecsDirty in some paths.