diff --git a/crates/libs/bindgen/src/types/interface.rs b/crates/libs/bindgen/src/types/interface.rs index d71900b2c6e..ddb8873ab81 100644 --- a/crates/libs/bindgen/src/types/interface.rs +++ b/crates/libs/bindgen/src/types/interface.rs @@ -461,7 +461,11 @@ impl Interface { type Item = T; fn next(&mut self) -> Option { - let result = self.Current().ok(); + let result = if self.HasCurrent().unwrap_or(false) { + self.Current().ok() + } else { + None + }; if result.is_some() { self.MoveNext().ok()?; diff --git a/crates/libs/windows/src/Windows/Foundation/Collections/mod.rs b/crates/libs/windows/src/Windows/Foundation/Collections/mod.rs index 2a2e37ea0f0..95571ccea2b 100644 --- a/crates/libs/windows/src/Windows/Foundation/Collections/mod.rs +++ b/crates/libs/windows/src/Windows/Foundation/Collections/mod.rs @@ -228,7 +228,7 @@ where impl Iterator for IIterator { type Item = T; fn next(&mut self) -> Option { - let result = self.Current().ok(); + let result = if self.HasCurrent().unwrap_or(false) { self.Current().ok() } else { None }; if result.is_some() { self.MoveNext().ok()?; } diff --git a/crates/tests/bindgen/src/class_dep.rs b/crates/tests/bindgen/src/class_dep.rs index 70e9c660e23..7a88fe3d249 100644 --- a/crates/tests/bindgen/src/class_dep.rs +++ b/crates/tests/bindgen/src/class_dep.rs @@ -332,7 +332,11 @@ where impl Iterator for IIterator { type Item = T; fn next(&mut self) -> Option { - let result = self.Current().ok(); + let result = if self.HasCurrent().unwrap_or(false) { + self.Current().ok() + } else { + None + }; if result.is_some() { self.MoveNext().ok()?; } diff --git a/crates/tests/bindgen/src/interface_iterable.rs b/crates/tests/bindgen/src/interface_iterable.rs index 841154faad1..0642754e15e 100644 --- a/crates/tests/bindgen/src/interface_iterable.rs +++ b/crates/tests/bindgen/src/interface_iterable.rs @@ -332,7 +332,11 @@ where impl Iterator for IIterator { type Item = T; fn next(&mut self) -> Option { - let result = self.Current().ok(); + let result = if self.HasCurrent().unwrap_or(false) { + self.Current().ok() + } else { + None + }; if result.is_some() { self.MoveNext().ok()?; }