Module Name:    xsrc
Committed By:   christos
Date:           Sun May  9 16:58:19 UTC 2021

Modified Files:
        xsrc/external/mit/libXaw/dist/src: Pixmap.c

Log Message:
make this compile again under clang:
- factor out duplicated code
- add casts
- plug memory leak


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.6 -r1.2 xsrc/external/mit/libXaw/dist/src/Pixmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/libXaw/dist/src/Pixmap.c
diff -u xsrc/external/mit/libXaw/dist/src/Pixmap.c:1.1.1.6 xsrc/external/mit/libXaw/dist/src/Pixmap.c:1.2
--- xsrc/external/mit/libXaw/dist/src/Pixmap.c:1.1.1.6	Mon Apr 26 17:23:18 2021
+++ xsrc/external/mit/libXaw/dist/src/Pixmap.c	Sun May  9 12:58:19 2021
@@ -699,6 +699,27 @@ GetResourcePixmapPath(Display *display)
 	pixmap_path = default_path;
 }
 
+static const char *
+GetFileName(XawParams *params, Screen *screen)
+{
+  static SubstitutionRec sub[] = {
+    {'H',   NULL},
+    {'N',   NULL},
+    {'T',   "pixmaps"},
+    {'P',   PROJECT_ROOT},
+  };
+  if (params->name[0] != '/' && params->name[0] != '.')
+    {
+      if (!sub[0].substitution)
+	sub[0].substitution = getenv("HOME");
+      sub[1].substitution = (char *)params->name;
+      if (pixmap_path == NULL)
+	GetResourcePixmapPath(DisplayOfScreen(screen));
+      return XtFindFile(pixmap_path, sub, XtNumber(sub), NULL);
+    }
+   return params->name;
+}
+
 static Bool
 BitmapLoader(XawParams *params, Screen *screen, Colormap colormap, int depth,
 	     Pixmap *pixmap_return, Pixmap *mask_return,
@@ -712,13 +733,7 @@ BitmapLoader(XawParams *params, Screen *
   int hotX, hotY;
   XawArgVal *argval;
   Bool retval = False;
-  static SubstitutionRec sub[] = {
-    {'H',   NULL},
-    {'N',   NULL},
-    {'T',   "bitmaps"},
-    {'P',   PROJECT_ROOT},
-  };
-  char *filename;
+  const char *filename;
 
   fg = BlackPixelOfScreen(screen);
   bg = WhitePixelOfScreen(screen);
@@ -742,19 +757,9 @@ BitmapLoader(XawParams *params, Screen *
 	return (False);
     }
 
-  if (params->name[0] != '/' && params->name[0] != '.')
-    {
-      if (!sub[0].substitution)
-	sub[0].substitution = getenv("HOME");
-      sub[1].substitution = params->name;
-      if (pixmap_path == NULL)
-	GetResourcePixmapPath(DisplayOfScreen(screen));
-      filename = XtFindFile(pixmap_path, sub, XtNumber(sub), NULL);
-      if (!filename)
-	return (FALSE);
-    }
-  else
-    filename = params->name;
+  filename = GetFileName(params, screen);
+  if (!filename)
+    return (FALSE);
 
   if (XReadBitmapFileData(filename, &width, &height, &data,
 			  &hotX, &hotY) == BitmapSuccess)
@@ -774,7 +779,7 @@ BitmapLoader(XawParams *params, Screen *
     }
 
   if (filename != params->name)
-    XtFree(filename);
+    XtFree((char *)filename);
 
   return (retval);
 }
@@ -827,7 +832,7 @@ GradientLoader(XawParams *params, Screen
 
   value = NULL;
   if ((argval = XawFindArgVal(params, "start")) != NULL)
-    value = argval->value;
+    value = (char *)argval->value;
   if (value && !XAllocNamedColor(DisplayOfScreen(screen), colormap, value,
 			    &start, &color))
     return (False);
@@ -838,7 +843,7 @@ GradientLoader(XawParams *params, Screen
     }
   value = NULL;
   if ((argval = XawFindArgVal(params, "end")) != NULL)
-    value = argval->value;
+    value = (char *)argval->value;
   if (value && !XAllocNamedColor(DisplayOfScreen(screen), colormap, value,
 			    &end, &color))
     return (False);
@@ -932,31 +937,16 @@ XPixmapLoader(XawParams *params, Screen 
   XpmAttributes xpm_attributes;
   XawArgVal *argval;
   unsigned int closeness = 4000;
-  static SubstitutionRec sub[] = {
-    {'H',   NULL},
-    {'N',   NULL},
-    {'T',   "pixmaps"},
-    {'P',   PROJECT_ROOT},
-  };
+  Bool retval = False;
   const char *filename;
 
   if ((argval = XawFindArgVal(params, "closeness")) != NULL
       && argval->value)
     closeness = (unsigned)atoi(argval->value);
 
-  if (params->name[0] != '/' && params->name[0] != '.')
-    {
-      if (!sub[0].substitution)
-	sub[0].substitution = getenv("HOME");
-      sub[1].substitution = params->name;
-      if (pixmap_path == NULL)
-	GetResourcePixmapPath(DisplayOfScreen(screen));
-      filename = XtFindFile(pixmap_path, sub, XtNumber(sub), NULL);
-      if (!filename)
-	return (False);
-    }
-  else
-    filename = params->name;
+  filename = GetFileName(params, screen);
+  if (!filename)
+    return (FALSE);
 
   xpm_attributes.colormap = colormap;
   xpm_attributes.closeness = closeness;
@@ -968,10 +958,12 @@ XPixmapLoader(XawParams *params, Screen 
       *width_return = (Dimension)xpm_attributes.width;
       *height_return = (Dimension)xpm_attributes.height;
 
-      return (True);
+      retval = True;
     }
 
-  return (False);
+  if (filename != params->name)
+    XtFree((char *)filename);
+  return (retval);
 }
 
 void

Reply via email to