diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs
index 7d0cc77387c..9ad6cd77e3b 100644
--- a/components/script/dom/htmlserializer.rs
+++ b/components/script/dom/htmlserializer.rs
@@ -21,8 +21,8 @@ use std::borrow::ToOwned;
pub fn serialize(iterator: &mut NodeIterator) -> String {
let mut html = String::new();
let mut open_elements: Vec = vec!();
- let depth = iterator.depth;
- for node in iterator {
+ while let Some(node) = iterator.next() {
+ let depth = iterator.depth;
while open_elements.len() > depth {
html.push_str("");
html.push_str(open_elements.pop().unwrap().as_slice());
diff --git a/tests/content/test_innerHTML.html b/tests/content/test_innerHTML.html
index 710dc256de4..b140cfbe894 100644
--- a/tests/content/test_innerHTML.html
+++ b/tests/content/test_innerHTML.html
@@ -4,7 +4,9 @@