Fix segfault when replicant source can't be found
This commit is contained in:
parent
192aa666ca
commit
0e99b0ceed
@ -105,7 +105,7 @@ String XmdReplicantResolveName (ConstString rawName) {
|
||||
String name = NULL;
|
||||
XtAsprintf(&name, "%s.so", rawName);
|
||||
if (list == NULL) list = defaultReplicantPath;
|
||||
|
||||
|
||||
while (file == NULL) {
|
||||
char ch = *list;
|
||||
if (dirBuffer == NULL) dirBuffer = XmdBufferNew(char);
|
||||
@ -120,6 +120,7 @@ String XmdReplicantResolveName (ConstString rawName) {
|
||||
} else {
|
||||
XmdBufferPush(dirBuffer, &ch);
|
||||
}
|
||||
if (ch == 0) break;
|
||||
list ++;
|
||||
}
|
||||
XtFree(name);
|
||||
@ -355,7 +356,9 @@ static replicantSource *sourceGet (ConstString name) {
|
||||
if (source != NULL) return source;
|
||||
|
||||
/* open the source */
|
||||
return sourceOpen(name);
|
||||
source = sourceOpen(name);
|
||||
XmdStringMapSet(resident, name, source);
|
||||
return source;
|
||||
}
|
||||
|
||||
static String scanDir (ConstString path, ConstString name) {
|
||||
|
@ -50,8 +50,9 @@ void handleDestroyFreePixmap (
|
||||
Widget Launcher_XmdReplicantCreate (
|
||||
XtAppContext application,
|
||||
Widget parent,
|
||||
XmdReplicantState *state,
|
||||
XmdReplicantState *state
|
||||
) {
|
||||
(void)(application);
|
||||
String iconName = XmdReplicantStateQuery(state, "Icon");
|
||||
Pixmap icon;
|
||||
#define iconCase(name) if (strcmp(#name, iconName) == 0) {\
|
||||
|
@ -65,7 +65,8 @@ static void loadReplicants (Widget parent) {
|
||||
XtAsprintf (
|
||||
&fullName, "%s/%s",
|
||||
replicantsDir, entry->d_name);
|
||||
XmdReplicantOpen(parent, fullName);
|
||||
XmdReplicantOpen (
|
||||
application, parent, fullName);
|
||||
XtFree(fullName);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user