浏览代码

Tables, Error Handling: Recovery from invalid index in TableSetColumnIndex(). (#1651)

ocornut 7 月之前
父节点
当前提交
98c2f6b0c4
共有 2 个文件被更改,包括 6 次插入1 次删除
  1. 1 0
      docs/CHANGELOG.txt
  2. 5 1
      imgui_tables.cpp

+ 1 - 0
docs/CHANGELOG.txt

@@ -66,6 +66,7 @@ Other changes:
   overridden when hot-reloading .ini state. (#7934)
   overridden when hot-reloading .ini state. (#7934)
 - Tables: tamed some .ini settings optimizations to more accurately allow
 - Tables: tamed some .ini settings optimizations to more accurately allow
   overwriting/hot-reloading settings in more situations. (#7934)
   overwriting/hot-reloading settings in more situations. (#7934)
+- Tables, Error Handling: Recovery from invalid index in TableSetColumnIndex(). (#1651)
 - Styles, Tabs: made the Close Button of selected tabs always visible by default,
 - Styles, Tabs: made the Close Button of selected tabs always visible by default,
   without requiring to hover the tab. (#8387)
   without requiring to hover the tab. (#8387)
   - Added style.TabCloseButtonMinWidthSelected/TabCloseButtonMinWidthUnselected settings
   - Added style.TabCloseButtonMinWidthSelected/TabCloseButtonMinWidthUnselected settings

+ 5 - 1
imgui_tables.cpp

@@ -2106,7 +2106,11 @@ bool ImGui::TableSetColumnIndex(int column_n)
     {
     {
         if (table->CurrentColumn != -1)
         if (table->CurrentColumn != -1)
             TableEndCell(table);
             TableEndCell(table);
-        IM_ASSERT(column_n >= 0 && table->ColumnsCount);
+        if ((column_n >= 0 && column_n < table->ColumnsCount) == false)
+        {
+            IM_ASSERT_USER_ERROR(column_n >= 0 && column_n < table->ColumnsCount, "TableSetColumnIndex() invalid column index!");
+            return false;
+        }
         TableBeginCell(table, column_n);
         TableBeginCell(table, column_n);
     }
     }