Handle GLFW initialization failure

I hit this when trying to run servo in an ssh session. It hit an rtabort with
"fatal runtime error: thread-local pointer is null. bogus!" The exit is
required because at this point, the runtime is in a very weird state, and a
fail is going to explode even more violelently than the original unwrap did.
This commit is contained in:
Corey Richardson 2013-12-02 17:47:58 -05:00
parent bf4498f948
commit 64b28decd0

View file

@ -14,7 +14,7 @@ use windowing::{Forward, Back};
use alert::{Alert, AlertMethods};
use extra::time::Timespec;
use extra::time;
use std::libc::c_int;
use std::libc::{exit, c_int};
use std::local_data;
use geom::point::Point2D;
use geom::size::Size2D;
@ -31,7 +31,14 @@ impl ApplicationMethods for Application {
// Per GLFW docs it's safe to set the error callback before calling
// glfwInit(), and this way we notice errors from init too.
glfw::set_error_callback(~glfw::LogErrorHandler);
glfw::init();
if glfw::init().is_err() {
// handles things like inability to connect to X
// cannot simply fail, since the runtime isn't up yet (causes a nasty abort)
println!("GLFW initialization failed");
unsafe { exit(1); }
}
Application
}
}