aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/net/image_cache_task.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-05-26 03:07:23 -0400
committerbors-servo <release+servo@mozilla.com>2014-05-26 03:07:23 -0400
commitea00ee8e509a46f6827254a5df35fe84c59f158b (patch)
tree8ee18c5a655e0e420d3cbef8cdbb5408bbd0b73f /src/components/net/image_cache_task.rs
parent3e4b2c1c7bda096115f1c90994ff9cc18826d51a (diff)
parent79ef14e84427ae2c871360da0666c20c8473ed3a (diff)
downloadservo-ea00ee8e509a46f6827254a5df35fe84c59f158b.tar.gz
servo-ea00ee8e509a46f6827254a5df35fe84c59f158b.zip
auto merge of #2476 : glennw/servo/issue-2412, r=huonw
...on bug #2412.
Diffstat (limited to 'src/components/net/image_cache_task.rs')
-rw-r--r--src/components/net/image_cache_task.rs30
1 files changed, 5 insertions, 25 deletions
diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs
index 5ff85b771a2..60403e9da1e 100644
--- a/src/components/net/image_cache_task.rs
+++ b/src/components/net/image_cache_task.rs
@@ -7,7 +7,6 @@ use resource_task;
use resource_task::ResourceTask;
use servo_util::url::{UrlMap, url_map};
-use std::cast;
use std::comm::{channel, Receiver, Sender};
use std::mem::replace;
use std::task::spawn;
@@ -144,8 +143,7 @@ struct ImageCache {
/// The state of processsing an image for a URL
state_map: UrlMap<ImageState>,
/// List of clients waiting on a WaitForImage response
- // FIXME(rust#13125): Remove the *() for the real type.
- wait_map: UrlMap<Arc<Mutex<*()>>>,
+ wait_map: UrlMap<Arc<Mutex<Vec<Sender<ImageResponseMsg>>>>>,
need_exit: Option<Sender<()>>,
}
@@ -373,17 +371,10 @@ impl ImageCache {
fn purge_waiters(&mut self, url: Url, f: || -> ImageResponseMsg) {
match self.wait_map.pop(&url) {
Some(waiters) => {
- let val = waiters.lock();
- let items = unsafe {
- cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val)
- };
+ let mut items = waiters.lock();
for response in items.iter() {
response.send(f());
}
- let _ = unsafe {
- // Cast back to avoid the drop at the end.
- cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items)
- };
}
None => ()
}
@@ -411,22 +402,11 @@ impl ImageCache {
if self.wait_map.contains_key(&url) {
let waiters = self.wait_map.find_mut(&url).unwrap();
let mut response = Some(response);
- let val = waiters.lock();
- let mut items = unsafe {
- cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val)
- };
+ let mut items = waiters.lock();
items.push(response.take().unwrap());
- let _ = unsafe {
- // Cast back to avoid the drop at the end.
- cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items)
- };
} else {
- let response = box vec!(response);
- let wrapped = unsafe {
- Arc::new(Mutex::new(
- cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(response)))
- };
-
+ let response = vec!(response);
+ let wrapped = Arc::new(Mutex::new(response));
self.wait_map.insert(url, wrapped);
}
}