diff options
author | Alexander Putilin <avp-13@yandex.ru> | 2015-05-26 23:51:07 +0300 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2015-07-03 09:21:44 -0400 |
commit | f04779f3985dc9996c9bf47fe94c030670c2d9a8 (patch) | |
tree | 4d0f70d545824c273e19ef900cc0d45847b864a1 | |
parent | be9d60664d26e979489fe891b7b11468bb89ba2a (diff) | |
download | servo-f04779f3985dc9996c9bf47fe94c030670c2d9a8.tar.gz servo-f04779f3985dc9996c9bf47fe94c030670c2d9a8.zip |
fix 6058: --devtools panics if there is no console actor
-rw-r--r-- | components/devtools/lib.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index f0fca1a9b0e..945af8210fc 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -250,7 +250,10 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, id: PipelineId, console_message: ConsoleMessage, actor_pipelines: &HashMap<PipelineId, String>) { - let console_actor_name = find_console_actor(actors.clone(), id, actor_pipelines); + let console_actor_name = match find_console_actor(actors.clone(), id, actor_pipelines) { + Some(name) => name, + None => return, + }; let actors = actors.lock().unwrap(); let console_actor = actors.find::<ConsoleActor>(&console_actor_name); let msg = ConsoleAPICall { @@ -278,12 +281,15 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, fn find_console_actor(actors: Arc<Mutex<ActorRegistry>>, id: PipelineId, - actor_pipelines: &HashMap<PipelineId, String>) -> String { + actor_pipelines: &HashMap<PipelineId, String>) -> Option<String> { let actors = actors.lock().unwrap(); - let ref tab_actor_name = (*actor_pipelines)[&id]; + let tab_actor_name = match (*actor_pipelines).get(&id) { + Some(name) => name, + None => return None, + }; let tab_actor = actors.find::<TabActor>(tab_actor_name); let console_actor_name = tab_actor.console.clone(); - return console_actor_name; + return Some(console_actor_name); } fn handle_network_event(actors: Arc<Mutex<ActorRegistry>>, @@ -294,7 +300,11 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, request_id: String, network_event: NetworkEvent) { - let console_actor_name = find_console_actor(actors.clone(), pipeline_id, actor_pipelines); + let console_actor_name = match find_console_actor(actors.clone(), pipeline_id, + actor_pipelines) { + Some(name) => name, + None => return, + }; let netevent_actor_name = find_network_event_actor(actors.clone(), actor_requests, request_id.clone()); let mut actors = actors.lock().unwrap(); let actor = actors.find_mut::<NetworkEventActor>(&netevent_actor_name); |