mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-29 01:42:32 +01:00
fixed segfault with incomplete WM_CLASS
This commit is contained in:
@@ -93,12 +93,15 @@ void StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next);
|
||||
char *MakeCPPArgs(char *path);
|
||||
#endif
|
||||
|
||||
char *StrConcatDot(char *a, char *b);
|
||||
|
||||
char *ExpandOptions(WScreen *scr, char *cmdline);
|
||||
|
||||
void ExecuteShellCommand(WScreen *scr, char *command);
|
||||
|
||||
void StartLogShell(WScreen *scr);
|
||||
|
||||
|
||||
Bool IsDoubleClick(WScreen *scr, XEvent *event);
|
||||
|
||||
WWindow *NextToFocusAfter(WWindow *wwin);
|
||||
|
||||
19
src/misc.c
19
src/misc.c
@@ -1271,3 +1271,22 @@ UpdateDomainFile(WDDomain *domain)
|
||||
}
|
||||
|
||||
|
||||
|
||||
char*
|
||||
StrConcatDot(char *a, char *b)
|
||||
{
|
||||
int len;
|
||||
char *str;
|
||||
|
||||
if (!a)
|
||||
a = "";
|
||||
if (!b)
|
||||
b = "";
|
||||
|
||||
len = strlen(a)+strlen(b)+4;
|
||||
str = wmalloc(len);
|
||||
|
||||
snprintf(str, len, "%s.%s", a, b);
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
@@ -830,9 +830,9 @@ wManageWindow(WScreen *scr, Window window)
|
||||
|
||||
#define ADEQUATE(x) ((x)!=None && (x)!=wwin->client_win && (x)!=fPtr->leader)
|
||||
|
||||
|
||||
PropGetWMClass(wwin->main_window, &class, &instance);
|
||||
buffer = wmalloc(strlen(instance)+strlen(class)+2);
|
||||
sprintf(buffer, "%s.%s", instance, class);
|
||||
buffer = StrConcatDot(instance, class);
|
||||
|
||||
index = WMFindInArray(scr->fakeGroupLeaders, matchIdentifier, (void*)buffer);
|
||||
if (index != WANotFound) {
|
||||
|
||||
@@ -527,8 +527,7 @@ saveSettings(WMButton *button, InspectorPanel *panel)
|
||||
else if (WMGetButtonSelected(panel->bothRb) != 0) {
|
||||
char *buffer;
|
||||
|
||||
buffer = wmalloc(strlen(wwin->wm_instance)+strlen(wwin->wm_class)+2);
|
||||
sprintf(buffer, "%s.%s", wwin->wm_instance, wwin->wm_class);
|
||||
buffer = StrConcatDot(wwin->wm_instance, wwin->wm_class);
|
||||
key = WMCreatePLString(buffer);
|
||||
wfree(buffer);
|
||||
} else if (WMGetButtonSelected(panel->defaultRb) != 0) {
|
||||
@@ -684,8 +683,7 @@ saveSettings(WMButton *button, InspectorPanel *panel)
|
||||
char *class = wapp->main_window_desc->wm_class;
|
||||
char *buffer;
|
||||
|
||||
buffer = wmalloc(strlen(instance)+strlen(class)+2);
|
||||
sprintf(buffer, "%s.%s", instance, class);
|
||||
buffer = StrConcatDot(instance, class);
|
||||
key2 = WMCreatePLString(buffer);
|
||||
wfree(buffer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user