mirror of https://github.com/fltk/fltk
Added fallback mechanism if malformed UTF-8 is used for a window title.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8608 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
d4685c13ef
commit
ad50b753be
|
@ -1623,11 +1623,16 @@ int Fl_X::fake_X_wm(const Fl_Window* w,int &X,int &Y, int &bt,int &bx, int &by)
|
|||
Fl_Window *fl_dnd_target_window = 0;
|
||||
|
||||
static void q_set_window_title(NSWindow *nsw, const char * name ) {
|
||||
CFStringRef utf8_title = CFStringCreateWithCString(NULL, (name ? name : ""), kCFStringEncodingUTF8);
|
||||
if(utf8_title) {
|
||||
[nsw setTitle:(NSString*)utf8_title ];
|
||||
CFRelease(utf8_title);
|
||||
}
|
||||
CFStringRef title = CFStringCreateWithCString(NULL, (name ? name : ""), kCFStringEncodingUTF8);
|
||||
if(!title) { // fallback when name contains malformed UTF-8
|
||||
int l = strlen(name);
|
||||
unsigned short* utf16 = new unsigned short[l + 1];
|
||||
l = fl_utf8toUtf16(name, l, utf16, l + 1);
|
||||
title = CFStringCreateWithCharacters(NULL, utf16, l);
|
||||
delete[] utf16;
|
||||
}
|
||||
[nsw setTitle:(NSString*)title];
|
||||
CFRelease(title);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue