Fix for several segfaults in dtwm that happen with UTF-8 locale and were caused by...
authorEugene Doudine <dudinea@gmail.com>
Fri, 21 Feb 2014 11:34:04 +0000 (13:34 +0200)
committerJon Trulson <jon@radscan.com>
Sun, 23 Feb 2014 02:07:52 +0000 (19:07 -0700)
cde/lib/DtWidget/Control.c
cde/programs/dtwm/Clock.c

index dc414a7514b5039c89420c7d44b2baa82231eb9a..675d553e2f8318494973ae87817b4b91419e874a 100644 (file)
@@ -1716,7 +1716,6 @@ UpdateGCs(
   XtGCMask             value_mask;
   XmManagerWidget      mw = (XmManagerWidget) XtParent(g);
   XFontStruct *                font;
-  Boolean              font_rtn;
   
   if (!G__DoUpdate (g))
     return;
@@ -1736,16 +1735,19 @@ UpdateGCs(
   
   /*   Get normal GC.
    */
-  font_rtn = XmeRenderTableGetDefaultFont (G_FontList (g), &font);
-  value_mask = GCForeground | GCBackground | GCFont | GCFillStyle;
+  value_mask = GCForeground | GCBackground | GCFillStyle;
+  if (XmeRenderTableGetDefaultFont (G_FontList (g), &font)) {
+    value_mask |= GCFont;
+    values.font = font->fid;
+  }
+
   if (G_UseEmbossedText (g))
     values.foreground = WhitePixelOfScreen (XtScreen (g));
   else
     values.foreground = G_Foreground (g);
   values.background = G_Background (g);
-  
   values.fill_style = FillSolid;
-  values.font = font->fid;
+
   G_NormalGC (g) = XtGetGC ((Widget)mw, value_mask, &values);
   
   /*   Get top shadow GC.
index 7d7dea8939926bc384b834d4f2339829e9b042a6..0bc38a8585caa2cbc8599d66d569585d2c18bba9 100644 (file)
@@ -1027,8 +1027,13 @@ else if (G_ClockHandGC (g))
 
 /*     Get clock hand GC.
 */
-font_rtn = XmeRenderTableGetDefaultFont (G_FontList (g), &font);
-value_mask = GCForeground | GCFont | GCFillStyle;
+
+value_mask = GCForeground | GCFillStyle;
+
+if (XmeRenderTableGetDefaultFont (G_FontList (g), &font)) {
+  value_mask |= GCFont;
+  values.font = font->fid;
+}
 
 if (((G_PixmapForeground (g) == WhitePixelOfScreen (XtScreen (g))) &&
      (G_PixmapBackground (g) == BlackPixelOfScreen (XtScreen (g)))) ||
@@ -1038,7 +1043,7 @@ if (((G_PixmapForeground (g) == WhitePixelOfScreen (XtScreen (g))) &&
 else
     values.foreground = mw->manager.top_shadow_color;
 values.fill_style = FillSolid;
-values.font = font->fid;
+
 
 G_ClockHandGC (g) = XtGetGC ((Widget) mw, value_mask, &values);