Mercurial > dwindows
changeset 2251:15347d28995a
OS/2: Fix crash in dw_window_set_font() with NULL fontname.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 24 Jan 2021 21:00:15 +0000 |
parents | a691de150bef |
children | 5dbe950115c1 |
files | os2/dw.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/os2/dw.c Sun Jan 24 20:20:06 2021 +0000 +++ b/os2/dw.c Sun Jan 24 21:00:15 2021 +0000 @@ -5056,8 +5056,9 @@ { char *oldfont = DefaultFont; - DefaultFont = strdup(fontname); - free(oldfont); + DefaultFont = fontname ? strdup(fontname) : NULL; + if(oldfont) + free(oldfont); } /* Internal function to return a pointer to an item struct @@ -5492,8 +5493,11 @@ int API dw_window_set_font(HWND handle, const char *fontname) { HWND group = (HWND)dw_window_get_data(handle, "_dw_buddy"); + const char *font = fontname ? fontname : DefaultFont; + /* If we changed the font... */ - if(!WinSetPresParam(group ? group : handle, PP_FONTNAMESIZE, strlen(fontname)+1, (void *)fontname)) + if((!font && WinRemovePresParam(group ? group : handle, PP_FONTNAMESIZE)) || + (font && WinSetPresParam(group ? group : handle, PP_FONTNAMESIZE, strlen(font)+1, (void *)font))) { Item *item = _box_item(handle);