Patch panic around pinned tab count (#33335)

Joseph T. Lyons created

After much investigation, I have not been able to track down what is
causing [this
panic](https://github.com/zed-industries/zed/issues/33342). I'm clamping
the value for now, because a bug is better than a crash. Hopefully
someone finds reproduction steps, and I will implement a proper fix.

Release Notes:

- N/A

Change summary

crates/workspace/src/pane.rs | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)

Detailed changes

crates/workspace/src/pane.rs 🔗

@@ -2784,7 +2784,19 @@ impl Pane {
             })
             .collect::<Vec<_>>();
         let tab_count = tab_items.len();
-        let unpinned_tabs = tab_items.split_off(self.pinned_tab_count);
+        let safe_pinned_count = if self.pinned_tab_count > tab_count {
+            log::warn!(
+                "Pinned tab count ({}) exceeds actual tab count ({}). \
+                This should not happen. If possible, add reproduction steps, \
+                in a comment, to https://github.com/zed-industries/zed/issues/33342",
+                self.pinned_tab_count,
+                tab_count
+            );
+            tab_count
+        } else {
+            self.pinned_tab_count
+        };
+        let unpinned_tabs = tab_items.split_off(safe_pinned_count);
         let pinned_tabs = tab_items;
         TabBar::new("tab_bar")
             .when(