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);