cocoa: sanitize window title string and guard against NULL

If the utf8 string used to create the NSString for title was invalid utf8,
-stringWithUTF8String returned nil and triggered an assertion in Cocoa's
framework code.

Sanitize the utf8 string and if the sanitation wasn't enough just avoid
crashing by not setting a title.

Fixes #406
This commit is contained in:
Stefano Pigozzi 2013-12-25 17:58:34 +01:00
parent 7d553a4c26
commit a410a750c7
1 changed files with 6 additions and 1 deletions

View File

@ -349,7 +349,12 @@ static int create_gl_context(struct vo *vo, int gl3profile)
static void cocoa_set_window_title(struct vo *vo, const char *title)
{
struct vo_cocoa_state *s = vo->cocoa;
[s->window setTitle: [NSString stringWithUTF8String:title]];
void *talloc_ctx = talloc_new(NULL);
struct bstr btitle = bstr_sanitize_utf8_latin1(talloc_ctx, bstr0(title));
NSString *nstitle = [NSString stringWithUTF8String:btitle.start];
if (nstitle)
[s->window setTitle: nstitle];
talloc_free(talloc_ctx);
}
static void update_window(struct vo *vo, int d_width, int d_height)