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, , , ,
, ) == 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,
, ))
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,
, ))
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