mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Auto merge of #10070 - Ms2ger:unsafe-net, r=KiChjang
Disallow unsafe code in net and net_traits. <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10070) <!-- Reviewable:end -->
This commit is contained in:
commit
e551ea7322
4 changed files with 40 additions and 14 deletions
|
@ -18,7 +18,7 @@ use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::sync::mpsc::{Sender, channel};
|
use std::sync::mpsc::{Sender, Receiver, channel};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use util::resource_files::resources_dir_path;
|
use util::resource_files::resources_dir_path;
|
||||||
use util::thread::spawn_named;
|
use util::thread::spawn_named;
|
||||||
|
@ -261,6 +261,32 @@ struct DecoderMsg {
|
||||||
image: Option<Image>,
|
image: Option<Image>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Receivers {
|
||||||
|
cmd_receiver: Receiver<ImageCacheCommand>,
|
||||||
|
decoder_receiver: Receiver<DecoderMsg>,
|
||||||
|
progress_receiver: Receiver<ResourceLoadInfo>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Receivers {
|
||||||
|
#[allow(unsafe_code)]
|
||||||
|
fn recv(&self) -> SelectResult {
|
||||||
|
let cmd_receiver = &self.cmd_receiver;
|
||||||
|
let decoder_receiver = &self.decoder_receiver;
|
||||||
|
let progress_receiver = &self.progress_receiver;
|
||||||
|
select! {
|
||||||
|
msg = cmd_receiver.recv() => {
|
||||||
|
SelectResult::Command(msg.unwrap())
|
||||||
|
},
|
||||||
|
msg = decoder_receiver.recv() => {
|
||||||
|
SelectResult::Decoder(msg.unwrap())
|
||||||
|
},
|
||||||
|
msg = progress_receiver.recv() => {
|
||||||
|
SelectResult::Progress(msg.unwrap())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The types of messages that the main image cache thread receives.
|
/// The types of messages that the main image cache thread receives.
|
||||||
enum SelectResult {
|
enum SelectResult {
|
||||||
Command(ImageCacheCommand),
|
Command(ImageCacheCommand),
|
||||||
|
@ -317,22 +343,16 @@ impl ImageCache {
|
||||||
webrender_api: webrender_api,
|
webrender_api: webrender_api,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let receivers = Receivers {
|
||||||
|
cmd_receiver: cmd_receiver,
|
||||||
|
decoder_receiver: decoder_receiver,
|
||||||
|
progress_receiver: progress_receiver,
|
||||||
|
};
|
||||||
|
|
||||||
let mut exit_sender: Option<IpcSender<()>> = None;
|
let mut exit_sender: Option<IpcSender<()>> = None;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let result = select! {
|
match receivers.recv() {
|
||||||
msg = cmd_receiver.recv() => {
|
|
||||||
SelectResult::Command(msg.unwrap())
|
|
||||||
},
|
|
||||||
msg = decoder_receiver.recv() => {
|
|
||||||
SelectResult::Decoder(msg.unwrap())
|
|
||||||
},
|
|
||||||
msg = progress_receiver.recv() => {
|
|
||||||
SelectResult::Progress(msg.unwrap())
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
match result {
|
|
||||||
SelectResult::Command(cmd) => {
|
SelectResult::Command(cmd) => {
|
||||||
exit_sender = cache.handle_cmd(cmd);
|
exit_sender = cache.handle_cmd(cmd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#![feature(plugin)]
|
#![feature(plugin)]
|
||||||
#![plugin(plugins)]
|
#![plugin(plugins)]
|
||||||
|
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
|
||||||
extern crate brotli;
|
extern crate brotli;
|
||||||
extern crate cookie as cookie_rs;
|
extern crate cookie as cookie_rs;
|
||||||
extern crate devtools_traits;
|
extern crate devtools_traits;
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
#![allow(unsafe_code)]
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
#![feature(custom_attribute)]
|
#![feature(custom_attribute)]
|
||||||
#![plugin(heapsize_plugin, serde_macros)]
|
#![plugin(heapsize_plugin, serde_macros)]
|
||||||
|
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
|
||||||
extern crate heapsize;
|
extern crate heapsize;
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
extern crate image as piston_image;
|
extern crate image as piston_image;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue