Lock stderr while printing the alert() message.

2a7f262b7d was unsufficient for the case where
the interleaved output was actually on stderr rather than stdout, such as
output from the error macro.
This commit is contained in:
Ms2ger 2015-08-06 11:46:58 +02:00
parent 729e003c5d
commit c98d35ea6b

View file

@ -72,7 +72,7 @@ use std::cell::{Cell, Ref, RefMut, RefCell};
use std::collections::HashSet;
use std::default::Default;
use std::ffi::CString;
use std::io::{stdout, Write};
use std::io::{stdout, stderr, Write};
use std::mem as std_mem;
use std::rc::Rc;
use std::sync::Arc;
@ -361,10 +361,15 @@ impl<'a> WindowMethods for &'a Window {
// https://html.spec.whatwg.org/#dom-alert
fn Alert(self, s: DOMString) {
// Right now, just print to the console
// Ensure that stderr doesn't trample through the alert() we use to
// communicate test results.
let stderr = stderr();
let mut stderr = stderr.lock();
let stdout = stdout();
let mut stdout = stdout.lock();
writeln!(&mut stdout, "ALERT: {}", s).unwrap();
stdout.flush().unwrap();
stderr.flush().unwrap();
}
// https://html.spec.whatwg.org/multipage/#dom-window-close