aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/html/cssparse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/html/cssparse.rs')
-rw-r--r--src/components/script/html/cssparse.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/components/script/html/cssparse.rs b/src/components/script/html/cssparse.rs
index 6d9d0d18a5a..9111f517c12 100644
--- a/src/components/script/html/cssparse.rs
+++ b/src/components/script/html/cssparse.rs
@@ -10,7 +10,7 @@ use std::comm::Port;
use std::task;
use newcss::stylesheet::Stylesheet;
use newcss::util::DataStream;
-use servo_net::resource_task::{ResourceTask, ProgressMsg, Load, Payload, Done};
+use servo_net::resource_task::{ResourceTask, ProgressMsg, Load, Payload, Done, UrlChange};
use extra::url::Url;
/// Where a style sheet comes from.
@@ -57,10 +57,19 @@ fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) ->
fn resource_port_to_data_stream(input_port: Port<ProgressMsg>) -> DataStream {
return || {
- match input_port.recv() {
- Payload(data) => Some(data),
- Done(*) => None
+ // Can't just 'return' the value since we're inside a lambda
+ let mut result = None;
+ loop {
+ match input_port.recv() {
+ UrlChange(*) => (), // don't care that URL changed
+ Payload(data) => {
+ result = Some(data);
+ break;
+ }
+ Done(*) => break
+ }
}
+ result
}
}