From 21e28fdca240aa023d4c03ed02da792e6030eef4 Mon Sep 17 00:00:00 2001
From: Robbert van der Helm <mail@robbertvanderhelm.nl>
Date: Wed, 27 Apr 2022 16:51:47 +0200
Subject: [PATCH] Handle hosts providing zero output channels

---
 src/wrapper/vst3/wrapper.rs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/wrapper/vst3/wrapper.rs b/src/wrapper/vst3/wrapper.rs
index 80a43a19..572ed414 100644
--- a/src/wrapper/vst3/wrapper.rs
+++ b/src/wrapper/vst3/wrapper.rs
@@ -975,8 +975,12 @@ impl<P: Vst3Plugin> IAudioProcessor for Wrapper<P> {
                         let num_output_channels = (*data.outputs).num_channels as usize;
                         nih_debug_assert_eq!(num_output_channels, output_slices.len());
 
-                        for (output_channel_idx, output_channel_slice) in
-                            output_slices.iter_mut().enumerate()
+                        // In case the host does provide fewer output channels than we expect, we
+                        // should still try to handle that gracefully
+                        for (output_channel_idx, output_channel_slice) in output_slices
+                            .iter_mut()
+                            .take(num_output_channels)
+                            .enumerate()
                         {
                             // If `P::SAMPLE_ACCURATE_AUTOMATION` is set, then we may be iterating
                             // over the buffer in smaller sections.