This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project wmaker-crm.git.
The branch, next has been updated via 1265873fa310aa42d42fdfad1483c5f66d304825 (commit) via 1a64ca8275974592cfa3a42d4cbb0d4355031833 (commit) via 68e4ccca58ee42733083164d52fd635fecce4a35 (commit) via 788a51c1167fe760f905b865ea8830ac800b6653 (commit) via e750f9307eef531060aa8c4d5ab8ca4f3311c894 (commit) via a75699faefaa9b91ef78804e1b810f618ddf8825 (commit) via bec027258431c1f6d32dafe9f49f57017ba380ff (commit) via 32c8dc04ce40c72b19f11c90fddd2bd0329d9305 (commit) via 4501d4c0786081fa27e4f0130bfed57547e52aa2 (commit) via 659519f3065862a348d13f89ebb98db34cb4c056 (commit) via c2a357fe1bd95c59c839e874decd83ca4607fc8b (commit) via 3a68e974b65cf8b11d6352499e322c7bd7c7a25c (commit) via fab73f47c71d851de7ff71533b17540dde5659b2 (commit) via 99400735303826db7fa0ed1f836abc157cb965e6 (commit) via 7d48855077703d3537aee39f16634cc06f2ec272 (commit) via 9f2f94a17420b97d81d45bbab9764fb2716a3e12 (commit) via 741243a792a379872543f1ad7989dad2c6fbd3fc (commit) via bee02df72f1ff02fa11533f666d955511d9c3fbd (commit) via d292c6208038d08f85f81f15ddbed12d42d57602 (commit) via dc4df6455a2868577c04279af04bf4741e9b0d02 (commit) via 4894e3fe4d03b92de1dd1e4ba2b037068960c0bf (commit) via 43972d307ad232d926c250becc3ad80e866f1494 (commit) via 7f840db1aa0882e81225b66ad18820a048f3d069 (commit) from ca64091f05b2007c75d9cab876249b57fc4533e3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://repo.or.cz/w/wmaker-crm.git/commit/1265873fa310aa42d42fdfad1483c5f66d304825 commit 1265873fa310aa42d42fdfad1483c5f66d304825 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:51 2014 +0200 WMaker: removed use of dangerous RETRY macro in GetCommandForPid for Linux (Coverity #50267) As pointed by Coverity, the function GetCommandForPid did use a macro 'RETRY' for the 'close' of file descriptor, which is not correct because on success the function 'close' does not reset errno, and in case of failure the file descriptor is not more valid anyway. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/osdep_linux.c b/src/osdep_linux.c index 6d246e5c..bb1ef2e6 100644 --- a/src/osdep_linux.c +++ b/src/osdep_linux.c @@ -15,10 +15,6 @@ #include "osdep.h" -#define RETRY( x ) do { - x; - } while (errno == EINTR); - /* * copy argc and argv for an existing process identified by `pid' * into suitable storage given in ***argv and *argc. @@ -54,10 +50,10 @@ Bool GetCommandForPid(int pid, char ***argv, int *argc) break; if (errno == EINTR) continue; - RETRY( close(fd) ) + close(fd); return False; } - RETRY( close(fd) ) + close(fd); /* count args */ for (i = 0; i < count; i++) http://repo.or.cz/w/wmaker-crm.git/commit/1a64ca8275974592cfa3a42d4cbb0d4355031833 commit 1a64ca8275974592cfa3a42d4cbb0d4355031833 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:50 2014 +0200 WMaker: change conceptually imperfect code in drawerDestroy (Coverity #50265) Factually, the program works because the function 'drawerRemoveFromChain' uses only the address of the drawer and not the content of the structure, but conceptually this address point to a storage space that has been de-allocated, so that's calling for trouble for future code changes. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dock.c b/src/dock.c index 3fd3dbe1..8b93a506 100644 --- a/src/dock.c +++ b/src/dock.c @@ -4448,13 +4448,15 @@ static void drawerDestroy(WDock *drawer) wAppIconDestroy(drawer->icon_array[0]); wfree(drawer->icon_array); - wfree(drawer); + drawer->icon_array = NULL; drawerRemoveFromChain(scr, drawer); if (scr->last_dock == drawer) scr->last_dock = NULL; if (scr->attracting_drawer == drawer) scr->attracting_drawer = NULL; + + wfree(drawer); } http://repo.or.cz/w/wmaker-crm.git/commit/68e4ccca58ee42733083164d52fd635fecce4a35 commit 68e4ccca58ee42733083164d52fd635fecce4a35 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:49 2014 +0200 WMaker: removed check that is always true in wDefaultsInitDomain (Coverity #50243) As pointed by Coverity, the function 'wdefaultspathfordomain' cannot return a NULL path, so it is not necessary to check for it. (in the present case, it led Coverity to think it was possible to have the structure 'stbuf' uninitialised) Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/defaults.c b/src/defaults.c index 436cb203..2f4626fe 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -889,7 +889,6 @@ WDDomain *wDefaultsInitDomain(const char *domain, Bool requireDictionary) WDDomain *db; struct stat stbuf; static int inited = 0; - const char *the_path; WMPropList *shared_dict = NULL; if (!inited) { @@ -900,15 +899,14 @@ WDDomain *wDefaultsInitDomain(const char *domain, Bool requireDictionary) db = wmalloc(sizeof(WDDomain)); db->domain_name = domain; db->path = wdefaultspathfordomain(domain); - the_path = db->path; - if (the_path && stat(the_path, &stbuf) >= 0) { - db->dictionary = WMReadPropListFromFile(the_path); + if (stat(db->path, &stbuf) >= 0) { + db->dictionary = WMReadPropListFromFile(db->path); if (db->dictionary) { if (requireDictionary && !WMIsPLDictionary(db->dictionary)) { WMReleasePropList(db->dictionary); db->dictionary = NULL; - wwarning(_("Domain %s (%s) of defaults database is corrupted!"), domain, the_path); + wwarning(_("Domain %s (%s) of defaults database is corrupted!"), domain, db->path); } db->timestamp = stbuf.st_mtime; } else { http://repo.or.cz/w/wmaker-crm.git/commit/788a51c1167fe760f905b865ea8830ac800b6653 commit 788a51c1167fe760f905b865ea8830ac800b6653 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:48 2014 +0200 WMaker: fix memory leak in the window inspector when saving settings (Coverity #50175) As pointed by Coverity, there is one case where the string returned by WMGetTextFieldText could be left allocated. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/winspector.c b/src/winspector.c index 679c56f8..f1289ddd 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -488,11 +488,13 @@ static void saveSettings(WMWidget *button, void *client_data) /* The icon filename (if exists) */ icon_file = WMGetTextFieldText(panel->fileText); - if ((icon_file) && (icon_file[0] != 0)) { - value = WMCreatePLString(icon_file); - different |= insertAttribute(dict, winDic, AIcon, value, flags); - different2 |= insertAttribute(dict, appDic, AIcon, value, flags); - WMReleasePropList(value); + if (icon_file != NULL) { + if (icon_file[0] != '0') { + value = WMCreatePLString(icon_file); + different |= insertAttribute(dict, winDic, AIcon, value, flags); + different2 |= insertAttribute(dict, appDic, AIcon, value, flags); + WMReleasePropList(value); + } wfree(icon_file); } http://repo.or.cz/w/wmaker-crm.git/commit/e750f9307eef531060aa8c4d5ab8ca4f3311c894 commit e750f9307eef531060aa8c4d5ab8ca4f3311c894 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:47 2014 +0200 WMaker: fix memory leak in the window inspector when saving settings (Coverity #50174) As pointed by Coverity, there is one case where the application dictionary which is created temporarily (when saving the changes in the Window Inspector) could be left allocated. It is now freed in the common path to avoid problems. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/winspector.c b/src/winspector.c index e814fa32..679c56f8 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -598,7 +598,6 @@ static void saveSettings(WMWidget *button, void *client_data) WMPutInPLDictionary(dict, key2, appDic); } WMReleasePropList(key2); - WMReleasePropList(appDic); } else if (wwin->main_window != wwin->client_win) { WApplication *wapp = wApplicationOf(wwin->main_window); @@ -617,13 +616,12 @@ static void saveSettings(WMWidget *button, void *client_data) WMPutInPLDictionary(dict, key2, appDic); } WMReleasePropList(key2); - WMReleasePropList(appDic); } } else { WMMergePLDictionaries(winDic, appDic, True); different |= different2; - WMReleasePropList(appDic); } + WMReleasePropList(appDic); WMRemoveFromPLDictionary(dict, key); if (different) http://repo.or.cz/w/wmaker-crm.git/commit/a75699faefaa9b91ef78804e1b810f618ddf8825 commit a75699faefaa9b91ef78804e1b810f618ddf8825 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:46 2014 +0200 WMaker: fix possible memory leak in the icon chooser dialog (Coverity #50173) As reported by Coverity, it was possible to return early from the function 'listCallback' without de-allocating a temporary string. The string is now requested after this early return. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dialog.c b/src/dialog.c index 6b26aef8..90e7192b 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -664,13 +664,13 @@ static void listCallback(void *self, void *data) if (item == NULL) return; path = item->text; - tmp = wexpandpath(path); item = WMGetListSelectedItem(panel->iconList); if (item == NULL) return; iconFile = item->text; + tmp = wexpandpath(path); path = wmalloc(strlen(tmp) + strlen(iconFile) + 4); strcpy(path, tmp); strcat(path, "/"); http://repo.or.cz/w/wmaker-crm.git/commit/bec027258431c1f6d32dafe9f49f57017ba380ff commit bec027258431c1f6d32dafe9f49f57017ba380ff Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:45 2014 +0200 WMaker: fix dangerous code in file scanning for wAdvancedInputDialog (Coverity #50172) As pointer by Coverity, the function wstrappend may move the string in memory (because that's what realloc does if it can't expand the allocated buffer in-place), so it is important to use the returned address and not assume the old pointer is still valid. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dialog.c b/src/dialog.c index 8eb01f1a..6b26aef8 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -275,7 +275,7 @@ ScanFiles(const char *dir, const char *prefix, unsigned acceptmask, unsigned dec de->d_name + prefixlen) == WANotFound) { suffix = wstrdup(de->d_name + prefixlen); if (sb.st_mode & S_IFDIR) - wstrappend(suffix,"/"); + suffix = wstrappend(suffix, "/"); WMAddToArray(result, suffix); } wfree(fullfilename); http://repo.or.cz/w/wmaker-crm.git/commit/32c8dc04ce40c72b19f11c90fddd2bd0329d9305 commit 32c8dc04ce40c72b19f11c90fddd2bd0329d9305 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:44 2014 +0200 WMaker: fix memory leak in windows saved state handling (Coverity #50171) As pointed by Coverity, the caller of the function 'getSavedState' assumes that if the function returns 0 then the wstate is not initialised. This was not actually true, so this patch changes 'getSavedState' to behave as expected. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/window.c b/src/window.c index 9a6adbdd..a33747b8 100644 --- a/src/window.c +++ b/src/window.c @@ -2319,6 +2319,11 @@ static int getSavedState(Window window, WSavedState ** state) (unsigned char **)&data) != Success || !data || nitems_ret < 10) return 0; + if (type_ret != w_global.atom.wmaker.state) { + XFree(data); + return 0; + } + *state = wmalloc(sizeof(WSavedState)); (*state)->workspace = data[0]; @@ -2334,10 +2339,7 @@ static int getSavedState(Window window, WSavedState ** state) XFree(data); - if (*state && type_ret == w_global.atom.wmaker.state) - return 1; - else - return 0; + return 1; } #ifdef USE_XSHAPE http://repo.or.cz/w/wmaker-crm.git/commit/4501d4c0786081fa27e4f0130bfed57547e52aa2 commit 4501d4c0786081fa27e4f0130bfed57547e52aa2 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:43 2014 +0200 WMaker: fix memory leak when respawning after crash (Coverity #50165) As pointed by Coverity, the memory allocated to contain the argument list for spawning ourself was never released. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/monitor.c b/src/monitor.c index c023b306..f06ff517 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -125,6 +125,7 @@ int MonitorLoop(int argc, char **argv) * the crash panel and ask the user what to do */ if (time(NULL) - last_start < 3) { if (showCrashDialog(WTERMSIG(status)) == 0) { + wfree(child_argv); return 1; } } @@ -133,5 +134,6 @@ int MonitorLoop(int argc, char **argv) } else break; } + wfree(child_argv); return 0; } http://repo.or.cz/w/wmaker-crm.git/commit/659519f3065862a348d13f89ebb98db34cb4c056 commit 659519f3065862a348d13f89ebb98db34cb4c056 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:42 2014 +0200 WMaker: fix memory leak in the crash handling dialog (Coverity #50163) As pointed by Coverity, if the function wShowCrashingDialogPanel is not able to connect to the default screen, then the memory allocated for the panel would be leaked. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dialog.c b/src/dialog.c index 11027471..8eb01f1a 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -1569,8 +1569,6 @@ int wShowCrashingDialogPanel(int whatSig) int action; char buf[256]; - panel = wmalloc(sizeof(CrashPanel)); - screen_no = DefaultScreen(dpy); scr_width = WidthOfScreen(ScreenOfDisplay(dpy, screen_no)); scr_height = HeightOfScreen(ScreenOfDisplay(dpy, screen_no)); @@ -1581,6 +1579,8 @@ int wShowCrashingDialogPanel(int whatSig) return WMAbort; } + panel = wmalloc(sizeof(CrashPanel)); + panel->retKey = XKeysymToKeycode(dpy, XK_Return); panel->win = WMCreateWindow(scr, "crashingDialog"); http://repo.or.cz/w/wmaker-crm.git/commit/c2a357fe1bd95c59c839e874decd83ca4607fc8b commit c2a357fe1bd95c59c839e874decd83ca4607fc8b Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:41 2014 +0200 WMaker: fix memory leak in app icon changing (Coverity #50139) As pointed by Coverity, there are some cases where the name of the file returned by wIconChooserDialog could be left unfreed. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/appicon.c b/src/appicon.c index 4d4d81eb..43a0f32a 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -534,13 +534,16 @@ static void setIconCallback(WMenu *menu, WMenuEntry *entry) result = wIconChooserDialog(scr, &file, icon->wm_instance, icon->wm_class); - if (result && !icon->destroyed) { - if (!wIconChangeImageFile(icon->icon, file)) { - wMessageDialog(scr, _("Error"), - _("Could not open specified icon file"), _("OK"), NULL, NULL); - } else { - wDefaultChangeIcon(icon->wm_instance, icon->wm_class, file); - wAppIconPaint(icon); + if (result) { + if (!icon->destroyed) { + if (!wIconChangeImageFile(icon->icon, file)) { + wMessageDialog(scr, _("Error"), + _("Could not open specified icon file"), + _("OK"), NULL, NULL); + } else { + wDefaultChangeIcon(icon->wm_instance, icon->wm_class, file); + wAppIconPaint(icon); + } } if (file) wfree(file); http://repo.or.cz/w/wmaker-crm.git/commit/3a68e974b65cf8b11d6352499e322c7bd7c7a25c commit 3a68e974b65cf8b11d6352499e322c7bd7c7a25c Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:40 2014 +0200 WMaker: removed unnecessary case handling in appicon setting The function wIconChooserDialog already makes sure that it returns NULL if its result would have been an empty string, so it is not necessary to re-check this in setIconCallback, this leads to more complicated code and can't be optimised by the compiler. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/appicon.c b/src/appicon.c index bbf1455f..4d4d81eb 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -535,10 +535,6 @@ static void setIconCallback(WMenu *menu, WMenuEntry *entry) result = wIconChooserDialog(scr, &file, icon->wm_instance, icon->wm_class); if (result && !icon->destroyed) { - if (file && *file == 0) { - wfree(file); - file = NULL; - } if (!wIconChangeImageFile(icon->icon, file)) { wMessageDialog(scr, _("Error"), _("Could not open specified icon file"), _("OK"), NULL, NULL); http://repo.or.cz/w/wmaker-crm.git/commit/fab73f47c71d851de7ff71533b17540dde5659b2 commit fab73f47c71d851de7ff71533b17540dde5659b2 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:39 2014 +0200 WMaker: fix memory leak in screen initialisation (Coverity #50134) As pointed by Coverity, if the function wScreenInit fails to properly attach to the screen then the storage structure and content were not released before returning. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/screen.c b/src/screen.c index afc9d17d..bb9d9b3f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -593,6 +593,12 @@ WScreen *wScreenInit(int screen_number) if (!scr->wmscreen) { wfatal(_("could not initialize WINGs widget set")); + RDestroyContext(scr->rcontext); + WMFreeArray(scr->fakeGroupLeaders); + wfree(scr->totalUsableArea); + wfree(scr->usableArea); + WMFreeBag(scr->stacking_list); + wfree(scr); return NULL; } http://repo.or.cz/w/wmaker-crm.git/commit/99400735303826db7fa0ed1f836abc157cb965e6 commit 99400735303826db7fa0ed1f836abc157cb965e6 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:38 2014 +0200 WMaker: fix memory leak in the switchpanel backgroung image (Coverity #50131) As pointed by Coverity, if the target width or height for the center ended being <= 0 then the image created to contain the generated assemblage would be leaked. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/switchpanel.c b/src/switchpanel.c index 16083658..e7bee409 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -239,19 +239,10 @@ static void scrollIcons(WSwitchPanel *panel, int delta) */ static RImage *assemblePuzzleImage(RImage **images, int width, int height) { - RImage *img = RCreateImage(width, height, 1); + RImage *img; RImage *tmp; int tw, th; RColor color; - if (!img) - return NULL; - - color.red = 0; - color.green = 0; - color.blue = 0; - color.alpha = 255; - - RFillImage(img, &color); tw = width - images[0]->width - images[2]->width; th = height - images[0]->height - images[6]->height; @@ -259,6 +250,16 @@ static RImage *assemblePuzzleImage(RImage **images, int width, int height) if (tw <= 0 || th <= 0) return NULL; + img = RCreateImage(width, height, 1); + if (!img) + return NULL; + + color.red = 0; + color.green = 0; + color.blue = 0; + color.alpha = 255; + RFillImage(img, &color); + /* top */ if (tw > 0) { tmp = RSmoothScaleImage(images[1], tw, images[1]->height); http://repo.or.cz/w/wmaker-crm.git/commit/7d48855077703d3537aee39f16634cc06f2ec272 commit 7d48855077703d3537aee39f16634cc06f2ec272 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:37 2014 +0200 WMaker: fix memory leak in workspace switching (Coverity #50126) As pointed by Coverity, if there's no window to unmap in a workspace, then the array used to build the list of the windows to be unmapped for workspace change would not be freed. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/workspace.c b/src/workspace.c index b0c436d0..d58f9046 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -472,8 +472,6 @@ void wWorkspaceRelativeChange(WScreen * scr, int amount) void wWorkspaceForceChange(WScreen * scr, int workspace) { WWindow *tmp, *foc = NULL, *foc2 = NULL; - WWindow **toUnmap; - int toUnmapSize, toUnmapCount; if (workspace >= MAX_WORKSPACES || workspace < 0) return; @@ -492,16 +490,19 @@ void wWorkspaceForceChange(WScreen * scr, int workspace) wWorkspaceMenuUpdate(w_global.clip.ws_menu); - toUnmapSize = 16; - toUnmapCount = 0; - toUnmap = wmalloc(toUnmapSize * sizeof(WWindow *)); - if ((tmp = scr->focused_window) != NULL) { + WWindow **toUnmap; + int toUnmapSize, toUnmapCount; + if ((IS_OMNIPRESENT(tmp) && (tmp->flags.mapped || tmp->flags.shaded) && !WFLAGP(tmp, no_focusable)) || tmp->flags.changing_workspace) { foc = tmp; } + toUnmapSize = 16; + toUnmapCount = 0; + toUnmap = wmalloc(toUnmapSize * sizeof(WWindow *)); + /* foc2 = tmp; will fix annoyance with gnome panel * but will create annoyance for every other application */ http://repo.or.cz/w/wmaker-crm.git/commit/9f2f94a17420b97d81d45bbab9764fb2716a3e12 commit 9f2f94a17420b97d81d45bbab9764fb2716a3e12 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:36 2014 +0200 WMaker: fix memory leak in root menu parser (Coverity #50123 and #50124) As pointed by Coverity, if an invalid OPEN_MENU is used then the memory allocated when parsing the line containing it would be leaked. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/rootmenu.c b/src/rootmenu.c index 8f0723cc..a922f5ea 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -627,6 +627,11 @@ static void constructMenu(WMenu * menu, WMenuEntry * entry) separateCommand((char *)entry->clientdata, &path, &cmd); if (path == NULL || *path == NULL || **path == 0) { wwarning(_("invalid OPEN_MENU specification: %s"), (char *)entry->clientdata); + if (path) { + for (i = 0; path[i] != NULL; i++) + wfree(path[i]); + wfree(path); + } if (cmd) wfree(cmd); return; @@ -747,6 +752,11 @@ static void constructPLMenuFromPipe(WMenu * menu, WMenuEntry * entry) if (path == NULL || *path == NULL || **path == 0) { wwarning(_("invalid OPEN_PLMENU specification: %s"), (char *)entry->clientdata); + if (path) { + for (i = 0; path[i] != NULL; i++) + wfree(path[i]); + wfree(path); + } if (cmd) wfree(cmd); return; http://repo.or.cz/w/wmaker-crm.git/commit/741243a792a379872543f1ad7989dad2c6fbd3fc commit 741243a792a379872543f1ad7989dad2c6fbd3fc Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:35 2014 +0200 WMaker: fix memory leak in the root menu parser (Coverity #50122) As pointed by Coverity, if the word "WITH" was used in the content of the root menu definition then its string would not be freed. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/rootmenu.c b/src/rootmenu.c index ca7750c9..8f0723cc 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -571,6 +571,7 @@ static void separateCommand(char *line, char ***file, char **command) *command = wstrdup(tmp); else wwarning(_("%s: missing command"), line); + wfree(token); break; } WMAddToArray(array, token); http://repo.or.cz/w/wmaker-crm.git/commit/bee02df72f1ff02fa11533f666d955511d9c3fbd commit bee02df72f1ff02fa11533f666d955511d9c3fbd Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:34 2014 +0200 WMaker: fix memory leak in wDockTrackWindowLaunch (Coverity #50120 and #50121) As pointed by Coverity, the function 'ProgGetWMClass' always allocates the strings returned in wm_class and wm_instance, so they always must be freed. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dock.c b/src/dock.c index 6c76d1c1..3fd3dbe1 100644 --- a/src/dock.c +++ b/src/dock.c @@ -3204,8 +3204,11 @@ void wDockTrackWindowLaunch(WDock *dock, Window window) Bool found = False; char *command = NULL; - if (!PropGetWMClass(window, &wm_class, &wm_instance) || (!wm_class && !wm_instance)) + if (!PropGetWMClass(window, &wm_class, &wm_instance)) { + free(wm_class); + free(wm_instance); return; + } command = GetCommandForWindow(window); retry: http://repo.or.cz/w/wmaker-crm.git/commit/d292c6208038d08f85f81f15ddbed12d42d57602 commit d292c6208038d08f85f81f15ddbed12d42d57602 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:33 2014 +0200 WMaker: fix memory leak in the windows icon chooser (Coverity #50117.2) As pointed by Coverity, a string could be left unfreed in the case where the window's attribute dialog is closed before an icon would be actually chosen from the Icon Chooser Dialog. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/winspector.c b/src/winspector.c index b265f48e..e814fa32 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -971,12 +971,13 @@ static void chooseIconCallback(WMWidget *self, void *clientData) if (result) { WMSetTextFieldText(panel->fileText, file); showIconFor(WMWidgetScreen(self), panel, NULL, NULL, USE_TEXT_FIELD); - wfree(file); } WMSetButtonEnabled(panel->browseIconBtn, True); } else { freeInspector(panel); } + if (result) + wfree(file); } static void textEditedObserver(void *observerData, WMNotification *notification) http://repo.or.cz/w/wmaker-crm.git/commit/dc4df6455a2868577c04279af04bf4741e9b0d02 commit dc4df6455a2868577c04279af04bf4741e9b0d02 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:32 2014 +0200 WMaker: fix memory leak in the docked apps icon chooser (Coverity #50117.1) As pointed by Coverity, a string could be left unfreed in the case where the docked application's settings dialog is closed before an icon would be actually chosen from the Icon Chooser Dialog. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/dockedapp.c b/src/dockedapp.c index 63a4864d..a7bca3bd 100644 --- a/src/dockedapp.c +++ b/src/dockedapp.c @@ -136,7 +136,6 @@ static void chooseIconCallback(WMWidget * self, void *clientData) if (!panel->destroyed) { if (result) { WMSetTextFieldText(panel->iconField, file); - wfree(file); updateSettingsPanelIcon(panel); } @@ -146,6 +145,8 @@ static void chooseIconCallback(WMWidget * self, void *clientData) * the icon chooser */ DestroyDockAppSettingsPanel(panel); } + if (result) + wfree(file); } static void panelBtnCallback(WMWidget * self, void *data) http://repo.or.cz/w/wmaker-crm.git/commit/4894e3fe4d03b92de1dd1e4ba2b037068960c0bf commit 4894e3fe4d03b92de1dd1e4ba2b037068960c0bf Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:31 2014 +0200 WMaker: fix memory leak in window inspector (Coverity #50116) As pointed by Coverity, in this specific case the string previously stored in 'file' was lost when replaced with the string from 'db_icon'. The logic have been simplified to avoid the case. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/winspector.c b/src/winspector.c index 1e185f52..b265f48e 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -307,7 +307,7 @@ static void changePage(WMWidget *bPtr, void *client_data) static int showIconFor(WMScreen *scrPtr, InspectorPanel *panel, const char *wm_instance, const char *wm_class, int flags) { WMPixmap *pixmap = (WMPixmap *) NULL; - char *file = NULL, *path = NULL, *db_icon = NULL; + char *file = NULL, *path = NULL; if ((flags & USE_TEXT_FIELD) != 0) { file = WMGetTextFieldText(panel->fileText); @@ -315,16 +315,15 @@ static int showIconFor(WMScreen *scrPtr, InspectorPanel *panel, const char *wm_i wfree(file); file = NULL; } - } else { + } else if (flags & REVERT_TO_DEFAULT) { + const char *db_icon; + /* Get the application icon, default NOT included */ db_icon = wDefaultGetIconFile(wm_instance, wm_class, False); - if (db_icon != NULL) - file = wstrdup(db_icon); - } - if (db_icon != NULL && (flags & REVERT_TO_DEFAULT) != 0) { - if (file) + if (db_icon != NULL) { file = wstrdup(db_icon); - flags |= UPDATE_TEXT_FIELD; + flags |= UPDATE_TEXT_FIELD; + } } if ((flags & UPDATE_TEXT_FIELD) != 0) http://repo.or.cz/w/wmaker-crm.git/commit/43972d307ad232d926c250becc3ad80e866f1494 commit 43972d307ad232d926c250becc3ad80e866f1494 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:30 2014 +0200 WMaker: fix memory leak in windows menu (Coverity #50109) As pointed by Coverity, there was a memory leak when updating the shortcuts in the menu for windows which occured when a shortcut was associated with the window and this shortcut did not change. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/winmenu.c b/src/winmenu.c index d8b3f4f3..5cf568b1 100644 --- a/src/winmenu.c +++ b/src/winmenu.c @@ -361,7 +361,6 @@ static void updateMakeShortcutMenu(WMenu *menu, WWindow *wwin) buffer = wmalloc(buflen); for (i = WO_ENTRIES; i < smenu->entry_no; i++) { - char *tmp; int shortcutNo = i - WO_ENTRIES; WMenuEntry *entry = smenu->entries[i]; WMArray *shortSelWindows = w_global.shortcut.windows[shortcutNo]; @@ -387,12 +386,28 @@ static void updateMakeShortcutMenu(WMenu *menu, WWindow *wwin) kcode = wKeyBindings[WKBD_WINDOW1 + shortcutNo].keycode; if (kcode) { - if ((tmp = GetShortcutKey(wKeyBindings[WKBD_WINDOW1 + shortcutNo])) - && (!entry->rtext || strcmp(tmp, entry->rtext) != 0)) { - if (entry->rtext) + char *tmp; + + tmp = GetShortcutKey(wKeyBindings[WKBD_WINDOW1 + shortcutNo]); + if (tmp == NULL) { + if (entry->rtext != NULL) { + /* There was a shortcut, but there is no more */ wfree(entry->rtext); + entry->rtext = NULL; + smenu->flags.realized = 0; + } + } else if (entry->rtext == NULL) { + /* There was no shortcut, but there is one now */ entry->rtext = tmp; smenu->flags.realized = 0; + } else if (strcmp(tmp, entry->rtext) != 0) { + /* There was a shortcut, but it has changed */ + wfree(entry->rtext); + entry->rtext = tmp; + smenu->flags.realized = 0; + } else { + /* There was a shortcut but it did not change */ + wfree(tmp); } wMenuSetEnabled(smenu, i, True); } else { http://repo.or.cz/w/wmaker-crm.git/commit/7f840db1aa0882e81225b66ad18820a048f3d069 commit 7f840db1aa0882e81225b66ad18820a048f3d069 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Tue May 20 21:46:29 2014 +0200 WMaker: remove unnecessary check in Balloon show function (Coverity #50065) As pointed by Coverity, there is a check to make sure a pointer is not NULL but it is still dereferenced later in the function. As the code is done so that this pointer cannot be NULL then it is not necessary to check that. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/balloon.c b/src/balloon.c index 6c056e44..b9c77bb2 100644 --- a/src/balloon.c +++ b/src/balloon.c @@ -382,10 +382,8 @@ static void showBalloon(WScreen * scr) Window foow; unsigned foo, w; - if (scr->balloon) { - scr->balloon->timer = NULL; - scr->balloon->ignoreTimer = 1; - } + scr->balloon->timer = NULL; + scr->balloon->ignoreTimer = 1; if (!XGetGeometry(dpy, scr->balloon->objectWindow, &foow, &x, &y, &w, &foo, &foo, &foo)) { scr->balloon->prevType = 0; ----------------------------------------------------------------------- Summary of changes: src/appicon.c | 21 ++++++++++----------- src/balloon.c | 6 ++---- src/defaults.c | 8 +++----- src/dialog.c | 8 ++++---- src/dock.c | 9 +++++++-- src/dockedapp.c | 3 ++- src/monitor.c | 2 ++ src/osdep_linux.c | 8 ++------ src/rootmenu.c | 11 +++++++++++ src/screen.c | 6 ++++++ src/switchpanel.c | 21 +++++++++++---------- src/window.c | 10 ++++++---- src/winmenu.c | 23 +++++++++++++++++++---- src/winspector.c | 34 +++++++++++++++++----------------- src/workspace.c | 13 +++++++------ 15 files changed, 109 insertions(+), 74 deletions(-) repo.or.cz automatic notification. Contact project admin crma...@gmail.com if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive no reply. -- wmaker-crm.git ("The Window Maker window manager") -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.