diff --git a/WINGs/handlers.c b/WINGs/handlers.c index b2872083..c937aaa1 100644 --- a/WINGs/handlers.c +++ b/WINGs/handlers.c @@ -126,7 +126,7 @@ WMHandlerID WMAddTimerHandler(int milliseconds, WMCallback * callback, void *cda { TimerHandler *handler; - handler = malloc(sizeof(TimerHandler)); + handler = wmalloc(sizeof(TimerHandler)); if (!handler) return NULL; @@ -214,7 +214,7 @@ WMHandlerID WMAddIdleHandler(WMCallback * callback, void *cdata) { IdleHandler *handler; - handler = malloc(sizeof(IdleHandler)); + handler = wmalloc(sizeof(IdleHandler)); if (!handler) return NULL; diff --git a/WINGs/widgets.c b/WINGs/widgets.c index c9a48245..e0434f5f 100644 --- a/WINGs/widgets.c +++ b/WINGs/widgets.c @@ -610,10 +610,9 @@ WMScreen *WMCreateScreenWithRContext(Display * display, int screen, RContext * c assert(W_ApplicationInitialized()); } - scrPtr = malloc(sizeof(W_Screen)); + scrPtr = wmalloc(sizeof(W_Screen)); if (!scrPtr) return NULL; - memset(scrPtr, 0, sizeof(W_Screen)); scrPtr->aflags.hasAppIcon = 1; diff --git a/WPrefs.app/Docks.c b/WPrefs.app/Docks.c index c83332c8..3a796dca 100644 --- a/WPrefs.app/Docks.c +++ b/WPrefs.app/Docks.c @@ -129,7 +129,7 @@ static void autoDelayChanged(void *observerData, WMNotification *notification) } char *value = WMGetTextFieldText(anAutoDelayT); adjustButtonSelectionBasedOnValue(panel, row, value); - free(value); + wfree(value); return; } } diff --git a/WPrefs.app/Focus.c b/WPrefs.app/Focus.c index 04198751..476a0898 100644 --- a/WPrefs.app/Focus.c +++ b/WPrefs.app/Focus.c @@ -138,7 +138,7 @@ static void storeData(_Panel * panel) if (sscanf(str, "%i", &i) != 1) i = 0; SetIntegerForKey(i, "RaiseDelay"); - free(str); + wfree(str); SetBoolForKey(WMGetButtonSelected(panel->ignB), "IgnoreFocusClick"); SetBoolForKey(WMGetButtonSelected(panel->newB), "AutoFocus"); diff --git a/WPrefs.app/HotCornerShortcuts.c b/WPrefs.app/HotCornerShortcuts.c index 56b437a6..73595cdc 100644 --- a/WPrefs.app/HotCornerShortcuts.c +++ b/WPrefs.app/HotCornerShortcuts.c @@ -147,7 +147,7 @@ static void storeData(_Panel * panel) if (sscanf(str, "%i", &i) != 1) i = 0; SetIntegerForKey(i, "HotCornerDelay"); - free(str); + wfree(str); SetIntegerForKey(WMGetSliderValue(panel->hceS), "HotCornerEdge"); diff --git a/src/dialog.c b/src/dialog.c index 53d52d04..e1aad51a 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -39,10 +39,6 @@ #include #include -#ifdef HAVE_MALLOC_H -#include -#endif - #include #ifdef __FreeBSD__ #include @@ -1361,7 +1357,7 @@ void wShowInfoPanel(WScreen *scr) char *posn = getPrettyOSName(); if (posn) { snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), posn, uts.machine); - free(posn); + wfree(posn); } else snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), uts.sysname, uts.machine); @@ -1393,31 +1389,6 @@ void wShowInfoPanel(WScreen *scr) break; } -#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO2) - { - struct mallinfo2 ma = mallinfo2(); - snprintf(buffer, sizeof(buffer), -#ifdef DEBUG - _("Total memory allocated: %lu kB (in use: %lu kB, %lu free chunks)\n"), -#else - _("Total memory allocated: %lu kB (in use: %lu kB)\n"), -#endif - (ma.arena + ma.hblkhd) / 1024, - (ma.uordblks + ma.hblkhd) / 1024 -#ifdef DEBUG - /* - * This information is representative of the memory - * fragmentation. In ideal case it should be 1, but - * that is never possible - */ - , ma.ordblks -#endif - ); - - strbuf = wstrappend(strbuf, buffer); - } -#endif - strbuf = wstrappend(strbuf, _("Image formats: ")); strl = RSupportedFileFormats(); separator = NULL; diff --git a/src/dock.c b/src/dock.c index 08bb91b5..19ed862f 100644 --- a/src/dock.c +++ b/src/dock.c @@ -3196,7 +3196,7 @@ static pid_t execCommand(WAppIcon *btn, const char *command, WSavedState *state) setsid(); #endif - args = malloc(sizeof(char *) * (argc + 1)); + args = wmalloc(sizeof(char *) * (argc + 1)); if (!args) exit(111); @@ -3340,8 +3340,8 @@ void wDockTrackWindowLaunch(WDock *dock, Window window) char *command = NULL; if (!PropGetWMClass(window, &wm_class, &wm_instance)) { - free(wm_class); - free(wm_instance); + wfree(wm_class); + wfree(wm_instance); return; } @@ -3421,10 +3421,8 @@ void wDockTrackWindowLaunch(WDock *dock, Window window) if (command) wfree(command); - if (wm_class) - free(wm_class); - if (wm_instance) - free(wm_instance); + wfree(wm_class); + wfree(wm_instance); } void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace) diff --git a/src/event.c b/src/event.c index 48666868..b8e64c28 100644 --- a/src/event.c +++ b/src/event.c @@ -141,7 +141,7 @@ WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler * callback, void *cdata) { DeathHandler *handler; - handler = malloc(sizeof(DeathHandler)); + handler = wmalloc(sizeof(DeathHandler)); if (!handler) return 0; @@ -150,7 +150,7 @@ WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler * callback, void *cdata) handler->client_data = cdata; if (!deathHandlers) - deathHandlers = WMCreateArrayWithDestructor(8, free); + deathHandlers = WMCreateArrayWithDestructor(8, wfree); WMAddToArray(deathHandlers, handler); @@ -164,7 +164,7 @@ static void wdelete_death_handler(WMagicNumber id) if (!handler || !deathHandlers) return; - /* array destructor will call free(handler) */ + /* array destructor will call wfree(handler) */ WMRemoveFromArray(deathHandlers, handler); } diff --git a/src/geomview.c b/src/geomview.c index 3564ffac..64ec5835 100644 --- a/src/geomview.c +++ b/src/geomview.c @@ -40,7 +40,7 @@ WGeometryView *WCreateGeometryView(WMScreen * scr) widgetClass = W_RegisterUserWidget(); } - gview = malloc(sizeof(WGeometryView)); + gview = wmalloc(sizeof(WGeometryView)); if (!gview) { return NULL; } diff --git a/src/main.c b/src/main.c index 3f5fd558..757db9f5 100644 --- a/src/main.c +++ b/src/main.c @@ -131,7 +131,7 @@ static void setWVisualID(int screen, int val) /* no array at all, alloc space for screen + 1 entries * and init with default value */ wVisualID_len = screen + 1; - wVisualID = (int *)malloc(wVisualID_len * sizeof(int)); + wVisualID = (int *)wmalloc(wVisualID_len * sizeof(int)); for (i = 0; i < wVisualID_len; i++) { wVisualID[i] = -1; } @@ -156,7 +156,7 @@ static void setWVisualID(int screen, int val) */ static int initWVisualID(const char *user_str) { - char *mystr = strdup(user_str); + char *mystr = wstrdup(user_str); int cur_in_pos = 0; int cur_out_pos = 0; int cur_screen = 0; @@ -191,7 +191,7 @@ static int initWVisualID(const char *user_str) cur_in_pos++; } - free(mystr); + wfree(mystr); if (cur_screen == 0||error_found != 0) return 1; @@ -383,7 +383,7 @@ Bool RelaunchWindow(WWindow *wwin) setsid(); #endif /* argv is not null-terminated */ - char **a = (char **) malloc(argc + 1); + char **a = (char **) wmalloc(argc + 1); if (! a) { werror("out of memory trying to relaunch the application"); Exit(-1); diff --git a/src/properties.c b/src/properties.c index d9ce4249..b42b1646 100644 --- a/src/properties.c +++ b/src/properties.c @@ -54,13 +54,13 @@ int PropGetWMClass(Window window, char **wm_class, char **wm_instance) class_hint = XAllocClassHint(); if (XGetClassHint(dpy, window, class_hint) == 0) { - *wm_class = strdup("default"); - *wm_instance = strdup("default"); + *wm_class = wstrdup("default"); + *wm_instance = wstrdup("default"); XFree(class_hint); return False; } - *wm_instance = strdup(class_hint->res_name); - *wm_class = strdup(class_hint->res_class); + *wm_instance = wstrdup(class_hint->res_name); + *wm_class = wstrdup(class_hint->res_class); XFree(class_hint->res_name); XFree(class_hint->res_class); diff --git a/src/rootmenu.c b/src/rootmenu.c index 213c30e8..c7931580 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -1243,7 +1243,7 @@ static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **path, co if (dentry->d_name[0] == '.') continue; - buffer = malloc(strlen(path[i]) + strlen(dentry->d_name) + 4); + buffer = wmalloc(strlen(path[i]) + strlen(dentry->d_name) + 4); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[i]); break; @@ -1288,7 +1288,7 @@ static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **path, co } } } - free(buffer); + wfree(buffer); } closedir(dir); @@ -1315,7 +1315,7 @@ static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **path, co length += 7; if (command) length += strlen(command) + 6; - buffer = malloc(length); + buffer = wmalloc(length); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[data->index]); break; @@ -1353,7 +1353,7 @@ static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **path, co if (command) length += strlen(command); - buffer = malloc(length); + buffer = wmalloc(length); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[data->index]); break; diff --git a/src/session.c b/src/session.c index ae5f1525..bd6bcfbf 100644 --- a/src/session.c +++ b/src/session.c @@ -290,9 +290,9 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp) } if (instance) - free(instance); + wfree(instance); if (class) - free(class); + wfree(class); if (command) wfree(command); @@ -383,7 +383,7 @@ static pid_t execCommand(WScreen *scr, char *command) SetupEnvironment(scr); - args = malloc(sizeof(char *) * (argc + 1)); + args = wmalloc(sizeof(char *) * (argc + 1)); if (!args) exit(111); for (i = 0; i < argc; i++) { diff --git a/src/superfluous.c b/src/superfluous.c index c0e40be9..65d4d843 100644 --- a/src/superfluous.c +++ b/src/superfluous.c @@ -244,7 +244,7 @@ reinit: wApplicationSetBouncing(data->wapp, 0); WMDeleteTimerHandler(data->timer); wApplicationDestroy(data->wapp); - free(data); + wfree(data); } static int bounceDirection(WAppIcon *aicon) @@ -324,7 +324,7 @@ void wAppBounce(WApplication *wapp) wApplicationIncrementRefcount(wapp); wApplicationSetBouncing(wapp, 1); - AppBouncerData *data = (AppBouncerData *)malloc(sizeof(AppBouncerData)); + AppBouncerData *data = (AppBouncerData *)wmalloc(sizeof(AppBouncerData)); data->wapp = wapp; data->count = data->pow = 0; data->dir = bounceDirection(wApplicationGetAppIcon(wapp)); diff --git a/src/switchpanel.c b/src/switchpanel.c index d5260b5e..9597779e 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -357,8 +357,7 @@ static void drawTitle(WSwitchPanel *panel, int idecks, const char *title) WMSetLabelText(panel->label, ntitle); } - if (ntitle) - free(ntitle); + wfree(ntitle); } static WMArray *makeWindowListArray(WScreen *scr, int include_unmapped, Bool class_only) diff --git a/src/window.c b/src/window.c index 508fa1b2..0f311437 100644 --- a/src/window.c +++ b/src/window.c @@ -950,10 +950,10 @@ WWindow *wManageWindow(WScreen *scr, Window window) } if (instance) - free(instance); + wfree(instance); if (class) - free(class); + wfree(class); #undef ADEQUATE } @@ -2602,7 +2602,7 @@ void wWindowSetShape(WWindow * wwin) if (!rects) goto alt_code; - urec = malloc(sizeof(XRectangle) * (count + 2)); + urec = wmalloc(sizeof(XRectangle) * (count + 2)); if (!urec) { XFree(rects); goto alt_code; @@ -2779,7 +2779,7 @@ WMagicNumber wWindowAddSavedState(const char *instance, const char *class, { WWindowState *wstate; - wstate = malloc(sizeof(WWindowState)); + wstate = wmalloc(sizeof(WWindowState)); if (!wstate) return NULL; @@ -2841,9 +2841,9 @@ WMagicNumber wWindowGetSavedState(Window win) if (command) wfree(command); if (instance) - free(instance); + wfree(instance); if (class) - free(class); + wfree(class); return wstate; } diff --git a/src/xdnd.c b/src/xdnd.c index 54c0df55..42cf4ee9 100644 --- a/src/xdnd.c +++ b/src/xdnd.c @@ -256,7 +256,7 @@ static void wXDNDGetTypeList(Display *dpy, Window window) return; } - typelist = malloc((count + 1) * sizeof(Atom)); + typelist = wmalloc((count + 1) * sizeof(Atom)); a = (Atom *) data; for (i = 0; i < count; i++) { typelist[i] = a[i]; @@ -267,7 +267,7 @@ static void wXDNDGetTypeList(Display *dpy, Window window) } typelist[count] = 0; XFree(data); - free(typelist); + wfree(typelist); } Bool wXDNDProcessClientMessage(XClientMessageEvent *event) diff --git a/util/Makefile.am b/util/Makefile.am index 1fe28f89..dd026050 100644 --- a/util/Makefile.am +++ b/util/Makefile.am @@ -28,7 +28,8 @@ wdread_LDADD = \ $(top_builddir)/wutil-rs/target/debug/libwutil_rs.a \ $(liblist) -wxcopy_LDADD = @XLFLAGS@ @XLIBS@ +wxcopy_LDADD = @XLFLAGS@ @XLIBS@ \ + $(top_builddir)/wutil-rs/target/debug/libwutil_rs.a wxpaste_LDADD = @XLFLAGS@ @XLIBS@ @@ -97,6 +98,7 @@ wmiv_CFLAGS = @PANGO_CFLAGS@ @PTHREAD_CFLAGS@ wmiv_LDADD = \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWINGs.la \ + $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wutil-rs/target/debug/libwutil_rs.a \ @XLFLAGS@ @XLIBS@ @GFXLIBS@ \ @PANGO_LIBS@ @PTHREAD_LIBS@ @LIBEXIF@ diff --git a/util/getstyle.c b/util/getstyle.c index 3cde01ac..a3d5f5fd 100644 --- a/util/getstyle.c +++ b/util/getstyle.c @@ -242,7 +242,7 @@ static void makeThemePack(WMPropList * style, const char *themeName) WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); - free(newPath); + wfree(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } @@ -262,7 +262,7 @@ static void makeThemePack(WMPropList * style, const char *themeName) WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); - free(newPath); + wfree(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } @@ -277,7 +277,7 @@ static void makeThemePack(WMPropList * style, const char *themeName) WMDeleteFromPLArray(value, 2); WMInsertInPLArray(value, 2, WMCreatePLString(newPath)); - free(newPath); + wfree(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } diff --git a/util/wmiv.c b/util/wmiv.c index 0d33a535..925d3afa 100755 --- a/util/wmiv.c +++ b/util/wmiv.c @@ -202,7 +202,7 @@ int change_title(XTextProperty *prop, char *filename) XSetWMName(dpy, win, prop); if (prop->value) XFree(prop->value); - free(combined_title); + wfree(combined_title); return EXIT_SUCCESS; } @@ -596,8 +596,8 @@ int linked_list_add(linked_list_t *list, const void *data) { link_t *link; - /* calloc sets the "next" field to zero. */ - link = calloc(1, sizeof(link_t)); + /* wmalloc zeros the buffer it returns, so the "next" is zero. */ + link = wmalloc(sizeof(link_t)); if (!link) { fprintf(stderr, "Error: memory allocation failed\n"); return EXIT_FAILURE; @@ -627,8 +627,8 @@ void linked_list_free(linked_list_t *list) /* Store the next value so that we don't access freed memory. */ next = link->next; if (link->data) - free((char *)link->data); - free(link); + wfree((char *)link->data); + wfree(link); } } @@ -651,7 +651,7 @@ link_t *connect_dir(char *dirpath, linked_list_t *li) /* maybe it's a file */ struct stat stDirInfo; if (lstat(dirpath, &stDirInfo) == 0) { - linked_list_add(li, strdup(dirpath)); + linked_list_add(li, wstrdup(dirpath)); return li->first; } else { return NULL; @@ -664,11 +664,11 @@ link_t *connect_dir(char *dirpath, linked_list_t *li) else snprintf(path, PATH_MAX, "%s%c%s", dirpath, FILE_SEPARATOR, dir[idx]->d_name); - free(dir[idx]); + wfree(dir[idx]); if ((lstat(path, &stDirInfo) == 0) && !S_ISDIR(stDirInfo.st_mode)) - linked_list_add(li, strdup(path)); + linked_list_add(li, wstrdup(path)); } - free(dir); + wfree(dir); return li->first; } diff --git a/util/wmmenugen_misc.c b/util/wmmenugen_misc.c index 161a32e0..56f2c254 100644 --- a/util/wmmenugen_misc.c +++ b/util/wmmenugen_misc.c @@ -121,7 +121,7 @@ void parse_locale(const char *what, char **language, char **country, char **enco *language = wstrdup(e); out: - free(e); + wfree(e); return; } diff --git a/util/wmsetbg.c b/util/wmsetbg.c index 2e65cace..652e64da 100644 --- a/util/wmsetbg.c +++ b/util/wmsetbg.c @@ -398,7 +398,7 @@ static BackgroundTexture *parseTexture(RContext * rc, char *text) RGradientStyle gtype; int iwidth, iheight; - colors = malloc(sizeof(RColor *) * (count - 1)); + colors = wmalloc(sizeof(RColor *) * (count - 1)); if (!colors) { wwarning("out of memory while parsing texture"); goto error; @@ -425,7 +425,7 @@ static BackgroundTexture *parseTexture(RContext * rc, char *text) wfree(colors); goto error; } - if (!(colors[i - 2] = malloc(sizeof(RColor)))) { + if (!(colors[i - 2] = wmalloc(sizeof(RColor)))) { wwarning("out of memory while parsing texture"); for (j = 0; colors[j] != NULL; j++) diff --git a/util/wxcopy.c b/util/wxcopy.c index 82b4c7f2..6fd76592 100644 --- a/util/wxcopy.c +++ b/util/wxcopy.c @@ -26,6 +26,8 @@ #include #include +#include + #include "../src/wconfig.h" #define LINESIZE (4*1024) @@ -197,7 +199,7 @@ int main(int argc, char **argv) break; } if (buf_len == 0) { - nbuf = malloc(buf_len = l + nl + 1); + nbuf = wmalloc(buf_len = l + nl + 1); } else if (buf_len < l + nl + 1) { /* * To avoid terrible performance on big input buffers, @@ -205,12 +207,7 @@ int main(int argc, char **argv) * current line. */ buf_len = 2 * buf_len + nl + 1; - /* some realloc implementations don't do malloc if buf==NULL */ - if (buf == NULL) { - nbuf = malloc(buf_len); - } else { - nbuf = realloc(buf, buf_len); - } + nbuf = wrealloc(buf, buf_len); } else { nbuf = buf; } diff --git a/wmlib/Makefile.am b/wmlib/Makefile.am index 8b87fdf9..33cd075c 100644 --- a/wmlib/Makefile.am +++ b/wmlib/Makefile.am @@ -6,7 +6,8 @@ lib_LTLIBRARIES = libWMaker.la include_HEADERS = WMaker.h -AM_CPPFLAGS = $(DFLAGS) @XCFLAGS@ +AM_CPPFLAGS = $(DFLAGS) @XCFLAGS@ \ + -I$(top_srcdir)/WINGs -I$(top_builddir)/WINGs libWMaker_la_LIBADD = @XLFLAGS@ @XLIBS@ diff --git a/wmlib/app.c b/wmlib/app.c index 9cd27c8c..9a3fdf3d 100644 --- a/wmlib/app.c +++ b/wmlib/app.c @@ -24,6 +24,8 @@ #include #include +#include + #include "WMaker.h" #include "app.h" @@ -31,7 +33,7 @@ WMAppContext *WMAppCreateWithMain(Display * display, int screen_number, Window m { wmAppContext *ctx; - ctx = malloc(sizeof(wmAppContext)); + ctx = wmalloc(sizeof(wmAppContext)); if (!ctx) return NULL; @@ -39,9 +41,9 @@ WMAppContext *WMAppCreateWithMain(Display * display, int screen_number, Window m ctx->screen_number = screen_number; ctx->our_leader_hint = False; ctx->main_window = main_window; - ctx->windows = malloc(sizeof(Window)); + ctx->windows = wmalloc(sizeof(Window)); if (!ctx->windows) { - free(ctx); + wfree(ctx); return NULL; } ctx->win_count = 1; @@ -58,13 +60,13 @@ int WMAppAddWindow(WMAppContext * app, Window window) { Window *win; - win = malloc(sizeof(Window) * (app->win_count + 1)); + win = wmalloc(sizeof(Window) * (app->win_count + 1)); if (!win) return False; memcpy(win, app->windows, sizeof(Window) * app->win_count); - free(app->windows); + wfree(app->windows); win[app->win_count] = window; app->windows = win; diff --git a/wmlib/menu.c b/wmlib/menu.c index 6646cd70..a3a1498d 100644 --- a/wmlib/menu.c +++ b/wmlib/menu.c @@ -26,6 +26,8 @@ #include #include +#include + #include "WMaker.h" #include "app.h" #include "menu.h" @@ -37,7 +39,7 @@ WMMenu *WMMenuCreate(WMAppContext * app, char *title) if (strlen(title) > 255) return NULL; - menu = malloc(sizeof(wmMenu)); + menu = wmalloc(sizeof(wmMenu)); if (!menu) return NULL; @@ -50,12 +52,12 @@ WMMenu *WMMenuCreate(WMAppContext * app, char *title) menu->realized = False; menu->code = app->last_menu_tag++; - menu->entryline = malloc(strlen(title) + 32); - menu->entryline2 = malloc(32); + menu->entryline = wmalloc(strlen(title) + 32); + menu->entryline2 = wmalloc(32); if (!menu->entryline || !menu->entryline2) { if (menu->entryline) - free(menu->entryline); - free(menu); + wfree(menu->entryline); + wfree(menu); return NULL; } sprintf(menu->entryline, "%i %i %s", wmBeginMenu, menu->code, title); @@ -77,13 +79,13 @@ WMMenuAddItem(WMMenu * menu, char *text, WMMenuAction action, if (strlen(text) > 255) return -1; - entry = malloc(sizeof(wmMenuEntry)); + entry = wmalloc(sizeof(wmMenuEntry)); if (!entry) return -1; - entry->entryline = malloc(strlen(text) + 100); + entry->entryline = wmalloc(strlen(text) + 100); if (!entry->entryline) { - free(entry); + wfree(entry); return -1; } @@ -125,13 +127,13 @@ int WMMenuAddSubmenu(WMMenu * menu, char *text, WMMenu * submenu) if (strlen(text) > 255) return -1; - entry = malloc(sizeof(wmMenuEntry)); + entry = wmalloc(sizeof(wmMenuEntry)); if (!entry) return -1; - entry->entryline = malloc(strlen(text) + 100); + entry->entryline = wmalloc(strlen(text) + 100); if (!entry->entryline) { - free(entry); + wfree(entry); return -1; } @@ -217,7 +219,7 @@ int WMRealizeMenus(WMAppContext * app) return True; count++; - slist = malloc(count * sizeof(char *)); + slist = wmalloc(count * sizeof(char *)); if (!slist) { return False; } @@ -227,10 +229,10 @@ int WMRealizeMenus(WMAppContext * app) addItems(slist, &i, app->main_menu); if (!XStringListToTextProperty(slist, i, &text_prop)) { - free(slist); + wfree(slist); return False; } - free(slist); + wfree(slist); XSetTextProperty(app->dpy, app->main_window, &text_prop, getatom(app->dpy)); XFree(text_prop.value); diff --git a/wrlib/Makefile.am b/wrlib/Makefile.am index a82bb9a0..5f88852a 100644 --- a/wrlib/Makefile.am +++ b/wrlib/Makefile.am @@ -82,7 +82,8 @@ libwraster_la_SOURCES += load_magick.c endif AM_CFLAGS = @MAGICKFLAGS@ -AM_CPPFLAGS = $(DFLAGS) @HEADER_SEARCH_PATH@ +AM_CPPFLAGS = $(DFLAGS) @HEADER_SEARCH_PATH@ \ + -I$(top_srcdir)/WINGs -I$(top_builddir)/WINGs libwraster_la_LIBADD = @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @MAGICKLIBS@ @XLIBS@ @LIBXMU@ -lm diff --git a/wrlib/context.c b/wrlib/context.c index 73044506..0a993605 100644 --- a/wrlib/context.c +++ b/wrlib/context.c @@ -37,6 +37,8 @@ #include +#include + #include "wraster.h" #include "scale.h" #include "wr_i18n.h" @@ -104,17 +106,17 @@ static Bool allocateStandardPseudoColor(RContext * ctx, XStandardColormap * stdc return False; } - ctx->colors = malloc(sizeof(XColor) * ctx->ncolors); + ctx->colors = wmalloc(sizeof(XColor) * ctx->ncolors); if (!ctx->colors) { RErrorCode = RERR_NOMEMORY; return False; } - ctx->pixels = malloc(sizeof(unsigned long) * ctx->ncolors); + ctx->pixels = wmalloc(sizeof(unsigned long) * ctx->ncolors); if (!ctx->pixels) { - free(ctx->colors); + wfree(ctx->colors); ctx->colors = NULL; RErrorCode = RERR_NOMEMORY; @@ -246,15 +248,15 @@ static Bool allocatePseudoColor(RContext *ctx) assert(cpc >= 2 && ncolors <= (1 << ctx->depth)); - colors = malloc(sizeof(XColor) * ncolors); + colors = wmalloc(sizeof(XColor) * ncolors); if (!colors) { RErrorCode = RERR_NOMEMORY; return False; } - ctx->pixels = malloc(sizeof(unsigned long) * ncolors); + ctx->pixels = wmalloc(sizeof(unsigned long) * ncolors); if (!ctx->pixels) { - free(colors); + wfree(colors); RErrorCode = RERR_NOMEMORY; return False; } @@ -343,7 +345,7 @@ static XColor *allocateGrayScale(RContext * ctx) ctx->attribs->render_mode = RBestMatchRendering; } - colors = malloc(sizeof(XColor) * ncolors); + colors = wmalloc(sizeof(XColor) * ncolors); if (!colors) { RErrorCode = RERR_NOMEMORY; return False; @@ -526,7 +528,7 @@ RContext *RCreateContext(Display * dpy, int screen_number, const RContextAttribu RContext *context; XGCValues gcv; - context = malloc(sizeof(RContext)); + context = wmalloc(sizeof(RContext)); if (!context) { RErrorCode = RERR_NOMEMORY; return NULL; @@ -537,9 +539,9 @@ RContext *RCreateContext(Display * dpy, int screen_number, const RContextAttribu context->screen_number = screen_number; - context->attribs = malloc(sizeof(RContextAttributes)); + context->attribs = wmalloc(sizeof(RContextAttributes)); if (!context->attribs) { - free(context); + wfree(context); RErrorCode = RERR_NOMEMORY; return NULL; } @@ -568,7 +570,7 @@ RContext *RCreateContext(Display * dpy, int screen_number, const RContextAttribu templ.visualid = context->attribs->visualid; vinfo = XGetVisualInfo(context->dpy, VisualIDMask | VisualScreenMask, &templ, &nret); if (!vinfo || nret == 0) { - free(context); + wfree(context); RErrorCode = RERR_BADVISUALID; return NULL; } @@ -615,13 +617,13 @@ RContext *RCreateContext(Display * dpy, int screen_number, const RContextAttribu if (context->vclass == PseudoColor || context->vclass == StaticColor) { if (!setupPseudoColorColormap(context)) { - free(context); + wfree(context); return NULL; } } else if (context->vclass == GrayScale || context->vclass == StaticGray) { context->colors = allocateGrayScale(context); if (!context->colors) { - free(context); + wfree(context); return NULL; } } else if (context->vclass == TrueColor) { @@ -668,9 +670,9 @@ void RDestroyContext(RContext *context) if ((context->attribs->flags & RC_VisualID) && !(context->attribs->flags & RC_DefaultVisual)) XDestroyWindow(context->dpy, context->drawable); - free(context->attribs); + wfree(context->attribs); } - free(context); + wfree(context); } } diff --git a/wrlib/convert.c b/wrlib/convert.c index 400234f0..0650fc71 100644 --- a/wrlib/convert.c +++ b/wrlib/convert.c @@ -33,13 +33,15 @@ #include #include +#include + #include "wraster.h" #include "convert.h" #include "xutil.h" #include "wr_i18n.h" -#define NFREE(n) if (n) free(n) +#define NFREE(n) wfree(n) #define HAS_ALPHA(I) ((I)->format == RRGBAFormat) @@ -70,7 +72,7 @@ static void release_conversion_table(void) RConversionTable *tmp_to_delete = tmp; tmp = tmp->next; - free(tmp_to_delete); + wfree(tmp_to_delete); } conversionTable = NULL; } @@ -83,7 +85,7 @@ static void release_std_conversion_table(void) RStdConversionTable *tmp_to_delete = tmp; tmp = tmp->next; - free(tmp_to_delete); + wfree(tmp_to_delete); } stdConversionTable = NULL; } @@ -108,7 +110,7 @@ static unsigned short *computeTable(unsigned short mask) if (tmp) return tmp->table; - tmp = (RConversionTable *) malloc(sizeof(RConversionTable)); + tmp = (RConversionTable *) wmalloc(sizeof(RConversionTable)); if (tmp == NULL) return NULL; @@ -135,7 +137,7 @@ static unsigned int *computeStdTable(unsigned int mult, unsigned int max) if (tmp) return tmp->table; - tmp = (RStdConversionTable *) malloc(sizeof(RStdConversionTable)); + tmp = (RStdConversionTable *) wmalloc(sizeof(RStdConversionTable)); if (tmp == NULL) return NULL; @@ -372,8 +374,8 @@ static RXImage *image2TrueColor(RContext * ctx, RImage * image) signed char *nerr; int ch = (HAS_ALPHA(image) ? 4 : 3); - err = malloc(ch * (image->width + 2)); - nerr = malloc(ch * (image->width + 2)); + err = wmalloc(ch * (image->width + 2)); + nerr = wmalloc(ch * (image->width + 2)); if (!err || !nerr) { NFREE(err); NFREE(nerr); @@ -387,8 +389,8 @@ static RXImage *image2TrueColor(RContext * ctx, RImage * image) convertTrueColor_generic(ximg, image, err, nerr, rtable, gtable, btable, dr, dg, db, roffs, goffs, boffs); - free(err); - free(nerr); + wfree(err); + wfree(nerr); } } @@ -540,8 +542,8 @@ static RXImage *image2PseudoColor(RContext * ctx, RImage * image) #ifdef WRLIB_DEBUG fprintf(stderr, "pseudo color dithering with %d colors per channel\n", cpc); #endif - err = malloc(4 * (image->width + 3)); - nerr = malloc(4 * (image->width + 3)); + err = wmalloc(4 * (image->width + 3)); + nerr = wmalloc(4 * (image->width + 3)); if (!err || !nerr) { NFREE(err); NFREE(nerr); @@ -555,8 +557,8 @@ static RXImage *image2PseudoColor(RContext * ctx, RImage * image) convertPseudoColor_to_8(ximg, image, err + 4, nerr + 4, rtable, gtable, btable, dr, dg, db, ctx->pixels, cpc); - free(err); - free(nerr); + wfree(err); + wfree(nerr); } return ximg; @@ -618,8 +620,8 @@ static RXImage *image2StandardPseudoColor(RContext * ctx, RImage * image) fprintf(stderr, "pseudo color dithering with %d colors per channel\n", ctx->attribs->colors_per_channel); #endif - err = (short *)malloc(3 * (image->width + 2) * sizeof(short)); - nerr = (short *)malloc(3 * (image->width + 2) * sizeof(short)); + err = (short *)wmalloc(3 * (image->width + 2) * sizeof(short)); + nerr = (short *)wmalloc(3 * (image->width + 2) * sizeof(short)); if (!err || !nerr) { NFREE(err); NFREE(nerr); @@ -707,8 +709,8 @@ static RXImage *image2StandardPseudoColor(RContext * ctx, RImage * image) ofs += ximg->image->bytes_per_line - image->width; } - free(err); - free(nerr); + wfree(err); + wfree(nerr); } ximg->image->data = (char *)data; @@ -773,8 +775,8 @@ static RXImage *image2GrayScale(RContext * ctx, RImage * image) #ifdef WRLIB_DEBUG fprintf(stderr, "grayscale dither with %d colors per channel\n", cpc); #endif - gerr = (short *)malloc((image->width + 2) * sizeof(short)); - ngerr = (short *)malloc((image->width + 2) * sizeof(short)); + gerr = (short *)wmalloc((image->width + 2) * sizeof(short)); + ngerr = (short *)wmalloc((image->width + 2) * sizeof(short)); if (!gerr || !ngerr) { NFREE(gerr); NFREE(ngerr); @@ -830,8 +832,8 @@ static RXImage *image2GrayScale(RContext * ctx, RImage * image) gerr = ngerr; ngerr = terr; } - free(gerr); - free(ngerr); + wfree(gerr); + wfree(ngerr); } ximg->image->data = (char *)data; diff --git a/wrlib/convolve.c b/wrlib/convolve.c index 8873a620..7d12fef4 100644 --- a/wrlib/convolve.c +++ b/wrlib/convolve.c @@ -26,6 +26,8 @@ #include #include +#include + #include "wraster.h" #include "wr_i18n.h" @@ -46,7 +48,7 @@ int RBlurImage(RImage * image) unsigned char *pptr = NULL, *tmpp; int ch = image->format == RRGBAFormat ? 4 : 3; - pptr = malloc(image->width * ch); + pptr = wmalloc(image->width * ch); if (!pptr) { RErrorCode = RERR_NOMEMORY; return False; @@ -138,7 +140,7 @@ int RBlurImage(RImage * image) } } - free(tmpp); + wfree(tmpp); return True; } diff --git a/wrlib/load.c b/wrlib/load.c index 1f94f0e4..f9907b66 100644 --- a/wrlib/load.c +++ b/wrlib/load.c @@ -34,6 +34,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -125,7 +127,7 @@ static void init_cache(void) RImageCacheMaxImage = IMAGE_CACHE_MAXIMUM_MAXPIXELS; if (RImageCacheSize > 0) { - RImageCache = malloc(sizeof(RCachedImage) * RImageCacheSize); + RImageCache = wmalloc(sizeof(RCachedImage) * RImageCacheSize); if (RImageCache == NULL) { fprintf(stderr, _("wrlib: out of memory for image cache\n")); return; @@ -142,10 +144,10 @@ void RReleaseCache(void) for (i = 0; i < RImageCacheSize; i++) { if (RImageCache[i].file) { RReleaseImage(RImageCache[i].image); - free(RImageCache[i].file); + wfree(RImageCache[i].file); } } - free(RImageCache); + wfree(RImageCache); RImageCache = NULL; RImageCacheSize = -1; } @@ -173,7 +175,7 @@ RImage *RLoadImage(RContext *context, const char *file, int index) return RCloneImage(RImageCache[i].image); } else { - free(RImageCache[i].file); + wfree(RImageCache[i].file); RImageCache[i].file = NULL; RReleaseImage(RImageCache[i].image); } @@ -254,8 +256,7 @@ RImage *RLoadImage(RContext *context, const char *file, int index) for (i = 0; i < RImageCacheSize; i++) { if (!RImageCache[i].file) { - RImageCache[i].file = malloc(strlen(file) + 1); - strcpy(RImageCache[i].file, file); + RImageCache[i].file = wstrdup(file); RImageCache[i].image = RCloneImage(image); RImageCache[i].last_modif = st.st_mtime; RImageCache[i].last_use = time(NULL); @@ -271,10 +272,9 @@ RImage *RLoadImage(RContext *context, const char *file, int index) /* if no slot available, dump least recently used one */ if (!done) { - free(RImageCache[oldest_idx].file); + wfree(RImageCache[oldest_idx].file); RReleaseImage(RImageCache[oldest_idx].image); - RImageCache[oldest_idx].file = malloc(strlen(file) + 1); - strcpy(RImageCache[oldest_idx].file, file); + RImageCache[oldest_idx].file = wstrdup(file); RImageCache[oldest_idx].image = RCloneImage(image); RImageCache[oldest_idx].last_modif = st.st_mtime; RImageCache[oldest_idx].last_use = time(NULL); diff --git a/wrlib/load_gif.c b/wrlib/load_gif.c index 5921735f..870eaf7c 100644 --- a/wrlib/load_gif.c +++ b/wrlib/load_gif.c @@ -28,6 +28,8 @@ #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -127,7 +129,7 @@ RImage *RLoadGIF(const char *file, int index) } } - buffer = malloc(width * sizeof(GifPixelType)); + buffer = wmalloc(width * sizeof(GifPixelType)); if (!buffer) { RErrorCode = RERR_NOMEMORY; goto bye; @@ -219,7 +221,7 @@ RImage *RLoadGIF(const char *file, int index) did_not_get_any_errors: if (buffer) - free(buffer); + wfree(buffer); if (gif) #if (USE_GIF == 5) && (GIFLIB_MINOR >= 1) diff --git a/wrlib/load_jpeg.c b/wrlib/load_jpeg.c index 9c2ef6be..e65fb2d2 100644 --- a/wrlib/load_jpeg.c +++ b/wrlib/load_jpeg.c @@ -35,6 +35,8 @@ #include #endif +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -119,7 +121,7 @@ static RImage *do_read_jpeg_file(struct jpeg_decompress_struct *cinfo, const cha goto abort_and_release_resources; } - buffer[0] = (JSAMPROW) malloc(cinfo->image_width * cinfo->num_components); + buffer[0] = (JSAMPROW) wmalloc(cinfo->image_width * cinfo->num_components); if (!buffer[0]) { RErrorCode = RERR_NOMEMORY; goto abort_and_release_resources; @@ -167,7 +169,7 @@ static RImage *do_read_jpeg_file(struct jpeg_decompress_struct *cinfo, const cha jpeg_destroy_decompress(cinfo); fclose(file); if (buffer[0]) - free(buffer[0]); + wfree(buffer[0]); return image; } diff --git a/wrlib/load_png.c b/wrlib/load_png.c index 50135b51..5eba4ed0 100644 --- a/wrlib/load_png.c +++ b/wrlib/load_png.c @@ -28,6 +28,8 @@ #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -165,7 +167,7 @@ RImage *RLoadPNG(RContext *context, const char *file) image->background.blue = bkcolor->blue >> 8; } - png_rows = calloc(height, sizeof(png_bytep)); + png_rows = wmalloc(height * sizeof(png_bytep)); if (!png_rows) { RErrorCode = RERR_NOMEMORY; fclose(f); @@ -174,7 +176,7 @@ RImage *RLoadPNG(RContext *context, const char *file) return NULL; } for (y = 0; y < height; y++) { - png_rows[y] = malloc(png_get_rowbytes(png, pinfo)); + png_rows[y] = wmalloc(png_get_rowbytes(png, pinfo)); if (!png_rows[y]) { RErrorCode = RERR_NOMEMORY; fclose(f); @@ -182,8 +184,8 @@ RImage *RLoadPNG(RContext *context, const char *file) png_destroy_read_struct(&png, &pinfo, &einfo); while (y-- > 0) if (png_rows[y]) - free(png_rows[y]); - free(png_rows); + wfree(png_rows[y]); + wfree(png_rows); return NULL; } } @@ -214,7 +216,7 @@ RImage *RLoadPNG(RContext *context, const char *file) } for (y = 0; y < height; y++) if (png_rows[y]) - free(png_rows[y]); - free(png_rows); + wfree(png_rows[y]); + wfree(png_rows); return image; } diff --git a/wrlib/load_ppm.c b/wrlib/load_ppm.c index 2f01c8ad..8e817589 100644 --- a/wrlib/load_ppm.c +++ b/wrlib/load_ppm.c @@ -29,6 +29,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -161,7 +163,7 @@ static RImage *load_graymap(FILE *file, int w, int h, int max, int raw, const ch if (raw == '5') { char *buf; - buf = malloc(w + 1); + buf = wmalloc(w + 1); if (!buf) { RErrorCode = RERR_NOMEMORY; RReleaseImage(image); @@ -169,7 +171,7 @@ static RImage *load_graymap(FILE *file, int w, int h, int max, int raw, const ch } for (y = 0; y < h; y++) { if (!fread(buf, w, 1, file)) { - free(buf); + wfree(buf); RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; @@ -181,7 +183,7 @@ static RImage *load_graymap(FILE *file, int w, int h, int max, int raw, const ch *(ptr++) = buf[x]; } } - free(buf); + wfree(buf); } } } diff --git a/wrlib/load_webp.c b/wrlib/load_webp.c index e1a4ee31..c703fb06 100644 --- a/wrlib/load_webp.c +++ b/wrlib/load_webp.c @@ -29,6 +29,8 @@ #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -110,7 +112,7 @@ RImage *RLoadWEBP(const char *file_name) return NULL; } - raw_data = (uint8_t *) malloc(raw_data_size); + raw_data = (uint8_t *) wmalloc(raw_data_size); if (!raw_data) { RErrorCode = RERR_NOMEMORY; @@ -124,7 +126,7 @@ RImage *RLoadWEBP(const char *file_name) if (r != raw_data_size) { RErrorCode = RERR_READ; - free(raw_data); + wfree(raw_data); return NULL; } @@ -133,7 +135,7 @@ RImage *RLoadWEBP(const char *file_name) fprintf(stderr, _("wrlib: could not get features from WebP file \"%s\", %s\n"), file_name, webp_message_from_status(status)); RErrorCode = RERR_BADIMAGEFILE; - free(raw_data); + wfree(raw_data); return NULL; } @@ -141,7 +143,7 @@ RImage *RLoadWEBP(const char *file_name) image = RCreateImage(features.width, features.height, True); if (!image) { RErrorCode = RERR_NOMEMORY; - free(raw_data); + wfree(raw_data); return NULL; } ret = WebPDecodeRGBAInto(raw_data, raw_data_size, image->data, @@ -151,7 +153,7 @@ RImage *RLoadWEBP(const char *file_name) image = RCreateImage(features.width, features.height, False); if (!image) { RErrorCode = RERR_NOMEMORY; - free(raw_data); + wfree(raw_data); return NULL; } ret = WebPDecodeRGBInto(raw_data, raw_data_size, image->data, @@ -159,7 +161,7 @@ RImage *RLoadWEBP(const char *file_name) features.width * 3); } - free(raw_data); + wfree(raw_data); if (!ret) { fprintf(stderr, _("wrlib: failed to decode WebP from file \"%s\"\n"), file_name); diff --git a/wrlib/load_xpm.c b/wrlib/load_xpm.c index 54697acf..d50e7c98 100644 --- a/wrlib/load_xpm.c +++ b/wrlib/load_xpm.c @@ -29,6 +29,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -59,11 +61,11 @@ static RImage *create_rimage_from_xpm(RContext *context, XpmImage xpm) /* make color table */ for (i = 0; i < 4; i++) { - color_table[i] = malloc(xpm.ncolors * sizeof(unsigned char)); + color_table[i] = wmalloc(xpm.ncolors * sizeof(unsigned char)); if (!color_table[i]) { for (i = i - 1; i >= 0; i--) { if (color_table[i]) - free(color_table[i]); + wfree(color_table[i]); } RReleaseImage(image); RErrorCode = RERR_NOMEMORY; @@ -123,7 +125,7 @@ static RImage *create_rimage_from_xpm(RContext *context, XpmImage xpm) *(data++) = color_table[3][*p]; } for (i = 0; i < 4; i++) - free(color_table[i]); + wfree(color_table[i]); return image; } diff --git a/wrlib/load_xpm_normalized.c b/wrlib/load_xpm_normalized.c index 82be3c4e..2bbb9176 100644 --- a/wrlib/load_xpm_normalized.c +++ b/wrlib/load_xpm_normalized.c @@ -59,15 +59,15 @@ static void free_color_symbol_table(unsigned char *color_table[], unsigned short *symbol_table) { if (color_table[0]) - free(color_table[0]); + wfree(color_table[0]); if (color_table[1]) - free(color_table[1]); + wfree(color_table[1]); if (color_table[2]) - free(color_table[2]); + wfree(color_table[2]); if (color_table[3]) - free(color_table[3]); + wfree(color_table[3]); if (symbol_table) - free(symbol_table); + wfree(symbol_table); } RImage *RGetImageFromXPMData(RContext * context, char **data) @@ -95,11 +95,11 @@ RImage *RGetImageFromXPMData(RContext * context, char **data) if (csize != 1 && csize != 2) goto bad_format; - color_table[0] = malloc(ccount); - color_table[1] = malloc(ccount); - color_table[2] = malloc(ccount); - color_table[3] = malloc(ccount); - symbol_table = malloc(ccount * sizeof(unsigned short)); + color_table[0] = wmalloc(ccount); + color_table[1] = wmalloc(ccount); + color_table[2] = wmalloc(ccount); + color_table[3] = wmalloc(ccount); + symbol_table = wmalloc(ccount * sizeof(unsigned short)); bsize = csize * w + 16; @@ -283,14 +283,14 @@ RImage *RLoadXPM(RContext * context, const char *file) if (csize != 1 && csize != 2) goto bad_format; - color_table[0] = malloc(ccount); - color_table[1] = malloc(ccount); - color_table[2] = malloc(ccount); - color_table[3] = malloc(ccount); - symbol_table = malloc(ccount * sizeof(unsigned short)); + color_table[0] = wmalloc(ccount); + color_table[1] = wmalloc(ccount); + color_table[2] = wmalloc(ccount); + color_table[3] = wmalloc(ccount); + symbol_table = wmalloc(ccount * sizeof(unsigned short)); bsize = csize * w + 16; - buffer = malloc(bsize); + buffer = wmalloc(bsize); if (!color_table[0] || !color_table[1] || !color_table[2] || !color_table[3] || !symbol_table || !bsize || !buffer) { @@ -298,7 +298,7 @@ RImage *RLoadXPM(RContext * context, const char *file) fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) - free(buffer); + wfree(buffer); return NULL; } @@ -355,7 +355,7 @@ RImage *RLoadXPM(RContext * context, const char *file) fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) - free(buffer); + wfree(buffer); return NULL; } @@ -434,7 +434,7 @@ RImage *RLoadXPM(RContext * context, const char *file) fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) - free(buffer); + wfree(buffer); return image; bad_format: @@ -442,7 +442,7 @@ RImage *RLoadXPM(RContext * context, const char *file) fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) - free(buffer); + wfree(buffer); if (image) RReleaseImage(image); return NULL; @@ -452,7 +452,7 @@ RImage *RLoadXPM(RContext * context, const char *file) fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) - free(buffer); + wfree(buffer); if (image) RReleaseImage(image); return NULL; diff --git a/wrlib/raster.c b/wrlib/raster.c index 0f8fdd11..14468a21 100644 --- a/wrlib/raster.c +++ b/wrlib/raster.c @@ -27,6 +27,8 @@ #include #include +#include + #include "wraster.h" #include "wr_i18n.h" @@ -53,7 +55,7 @@ RImage *RCreateImage(unsigned width, unsigned height, int alpha) return NULL; } - image = malloc(sizeof(RImage)); + image = wmalloc(sizeof(RImage)); if (!image) { RErrorCode = RERR_NOMEMORY; return NULL; @@ -68,10 +70,10 @@ RImage *RCreateImage(unsigned width, unsigned height, int alpha) /* the +4 is to give extra bytes at the end of the buffer, * so that we can optimize image conversion for MMX(tm).. see convert.c */ - image->data = malloc(width * height * (alpha ? 4 : 3) + 4); + image->data = wmalloc(width * height * (alpha ? 4 : 3) + 4); if (!image->data) { RErrorCode = RERR_NOMEMORY; - free(image); + wfree(image); image = NULL; } @@ -94,8 +96,8 @@ void RReleaseImage(RImage * image) image->refCount--; if (image->refCount < 1) { - free(image->data); - free(image); + wfree(image->data); + wfree(image); } } diff --git a/wrlib/save_jpeg.c b/wrlib/save_jpeg.c index 5320ba47..25c15f6c 100644 --- a/wrlib/save_jpeg.c +++ b/wrlib/save_jpeg.c @@ -29,6 +29,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -59,7 +61,7 @@ Bool RSaveJPEG(RImage *img, const char *filename, char *title) img_depth = 3; /* collect separate RGB values to a buffer */ - buffer = malloc(sizeof(char) * 3 * img->width * img->height); + buffer = wmalloc(sizeof(char) * 3 * img->width * img->height); for (y = 0; y < img->height; y++) { for (x = 0; x < img->width; x++) { RGetPixel(img, x, y, &pixel); @@ -97,7 +99,7 @@ Bool RSaveJPEG(RImage *img, const char *filename, char *title) jpeg_finish_compress(&cinfo); /* Clean */ - free(buffer); + wfree(buffer); fclose(file); return True; diff --git a/wrlib/save_png.c b/wrlib/save_png.c index 40d3b996..3ece7cf7 100644 --- a/wrlib/save_png.c +++ b/wrlib/save_png.c @@ -29,6 +29,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -95,7 +97,7 @@ Bool RSavePNG(RImage *img, const char *filename, char *title) png_write_info(png_ptr, png_info_ptr); /* Allocate memory for one row (3 bytes per pixel - RGB) */ - png_row = (png_bytep) malloc(3 * width * sizeof(png_byte)); + png_row = (png_bytep) wmalloc(3 * width * sizeof(png_byte)); /* Write image data */ for (y = 0; y < height; y++) { @@ -121,7 +123,7 @@ Bool RSavePNG(RImage *img, const char *filename, char *title) if (png_ptr != NULL) png_destroy_write_struct(&png_ptr, (png_infopp) NULL); if (png_row != NULL) - free(png_row); + wfree(png_row); return True; } diff --git a/wrlib/save_xpm.c b/wrlib/save_xpm.c index 243f9506..2dfae605 100644 --- a/wrlib/save_xpm.c +++ b/wrlib/save_xpm.c @@ -28,6 +28,8 @@ #include #include +#include + #include "wraster.h" #include "imgformat.h" #include "wr_i18n.h" @@ -95,7 +97,7 @@ static Bool addcolor(XPMColor ** list, unsigned r, unsigned g, unsigned b, int * if (tmpc) return True; - newc = malloc(sizeof(XPMColor)); + newc = wmalloc(sizeof(XPMColor)); if (!newc) { @@ -149,7 +151,7 @@ static void freecolormap(XPMColor * colormap) while (colormap) { tmp = colormap->next; - free(colormap); + wfree(colormap); colormap = tmp; } } diff --git a/wrlib/scale.c b/wrlib/scale.c index 93c5172d..3d5550c4 100644 --- a/wrlib/scale.c +++ b/wrlib/scale.c @@ -29,6 +29,8 @@ #include #include +#include + #include "wraster.h" #include "scale.h" #include "wr_i18n.h" @@ -295,7 +297,7 @@ typedef struct { /* clamp the input to the specified range */ #define CLAMP(v,l,h) ((v)<(l) ? (l) : (v) > (h) ? (h) : v) -/* return of calloc is not checked if NULL in the function below! */ +/* return of wmalloc is not checked if NULL in the function below! */ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) { CLIST *contrib; /* array of contribution lists */ @@ -319,13 +321,13 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) yscale = (double)new_height / (double)src->height; /* pre-calculate filter contributions for a row */ - contrib = (CLIST *) calloc(new_width, sizeof(CLIST)); + contrib = (CLIST *) wmalloc(new_width * sizeof(CLIST)); if (xscale < 1.0) { width = fwidth / xscale; fscale = 1.0 / xscale; for (i = 0; i < new_width; ++i) { contrib[i].n = 0; - contrib[i].p = (CONTRIB *) calloc((int) ceil(width * 2 + 1), sizeof(CONTRIB)); + contrib[i].p = (CONTRIB *) wmalloc(ceil(width * 2 + 1) * sizeof(CONTRIB)); center = (double)i / xscale; left = ceil(center - width); right = floor(center + width); @@ -348,7 +350,7 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) for (i = 0; i < new_width; ++i) { contrib[i].n = 0; - contrib[i].p = (CONTRIB *) calloc((int) ceil(fwidth * 2 + 1), sizeof(CONTRIB)); + contrib[i].p = (CONTRIB *) wmalloc(ceil(fwidth * 2 + 1) * sizeof(CONTRIB)); center = (double)i / xscale; left = ceil(center - fwidth); right = floor(center + fwidth); @@ -395,18 +397,18 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) /* free the memory allocated for horizontal filter weights */ for (i = 0; i < new_width; ++i) { - free(contrib[i].p); + wfree(contrib[i].p); } - free(contrib); + wfree(contrib); /* pre-calculate filter contributions for a column */ - contrib = (CLIST *) calloc(dst->height, sizeof(CLIST)); + contrib = (CLIST *) wmalloc(dst->height * sizeof(CLIST)); if (yscale < 1.0) { width = fwidth / yscale; fscale = 1.0 / yscale; for (i = 0; i < dst->height; ++i) { contrib[i].n = 0; - contrib[i].p = (CONTRIB *) calloc((int) ceil(width * 2 + 1), sizeof(CONTRIB)); + contrib[i].p = (CONTRIB *) wmalloc(ceil(width * 2 + 1) * sizeof(CONTRIB)); center = (double)i / yscale; left = ceil(center - width); right = floor(center + width); @@ -428,7 +430,7 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) } else { for (i = 0; i < dst->height; ++i) { contrib[i].n = 0; - contrib[i].p = (CONTRIB *) calloc((int) ceil(fwidth * 2 + 1), sizeof(CONTRIB)); + contrib[i].p = (CONTRIB *) wmalloc(ceil(fwidth * 2 + 1) * sizeof(CONTRIB)); center = (double)i / yscale; left = ceil(center - fwidth); right = floor(center + fwidth); @@ -450,7 +452,7 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) } /* apply filter to zoom vertically from tmp to dst */ - sp = malloc(tmp->height * 3); + sp = wmalloc(tmp->height * 3); for (k = 0; k < new_width; ++k) { CONTRIB *pp; @@ -485,13 +487,13 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) p += new_width * 3; } } - free(sp); + wfree(sp); /* free the memory allocated for vertical filter weights */ for (i = 0; i < dst->height; ++i) { - free(contrib[i].p); + wfree(contrib[i].p); } - free(contrib); + wfree(contrib); RReleaseImage(tmp); diff --git a/wrlib/tests/testgrad.c b/wrlib/tests/testgrad.c index 4b555aa4..9f6a97f3 100644 --- a/wrlib/tests/testgrad.c +++ b/wrlib/tests/testgrad.c @@ -149,10 +149,10 @@ int main(int argc, char **argv) getchar(); - free(color_name); + wfree(color_name); for (i = 0; i < ncolors + 1; i++) - free(colors[i]); - free(colors); + wfree(colors[i]); + wfree(colors); RDestroyContext(ctx); RShutdown(); diff --git a/wrlib/xutil.c b/wrlib/xutil.c index c1fbfeef..7131b4b2 100644 --- a/wrlib/xutil.c +++ b/wrlib/xutil.c @@ -31,6 +31,8 @@ #include +#include + #ifdef USE_XSHM #include #include @@ -63,7 +65,7 @@ RXImage *RCreateXImage(RContext * context, int depth, unsigned width, unsigned h RXImage *rximg; Visual *visual = context->visual; - rximg = malloc(sizeof(RXImage)); + rximg = wmalloc(sizeof(RXImage)); if (!rximg) { RErrorCode = RERR_NOMEMORY; return NULL; @@ -71,14 +73,14 @@ RXImage *RCreateXImage(RContext * context, int depth, unsigned width, unsigned h #ifndef USE_XSHM rximg->image = XCreateImage(context->dpy, visual, depth, ZPixmap, 0, NULL, width, height, 8, 0); if (!rximg->image) { - free(rximg); + wfree(rximg); RErrorCode = RERR_XERROR; return NULL; } - rximg->image->data = malloc(rximg->image->bytes_per_line * height); + rximg->image->data = wmalloc(rximg->image->bytes_per_line * height); if (!rximg->image->data) { XDestroyImage(rximg->image); - free(rximg); + wfree(rximg); RErrorCode = RERR_NOMEMORY; return NULL; } @@ -90,14 +92,14 @@ RXImage *RCreateXImage(RContext * context, int depth, unsigned width, unsigned h rximg->is_shared = 0; rximg->image = XCreateImage(context->dpy, visual, depth, ZPixmap, 0, NULL, width, height, 8, 0); if (!rximg->image) { - free(rximg); + wfree(rximg); RErrorCode = RERR_XERROR; return NULL; } - rximg->image->data = malloc(rximg->image->bytes_per_line * height); + rximg->image->data = wmalloc(rximg->image->bytes_per_line * height); if (!rximg->image->data) { XDestroyImage(rximg->image); - free(rximg); + wfree(rximg); RErrorCode = RERR_NOMEMORY; return NULL; } @@ -173,7 +175,7 @@ void RDestroyXImage(RContext * context, RXImage * rximage) XDestroyImage(rximage->image); } #endif - free(rximage); + wfree(rximage); } static unsigned getDepth(Display * dpy, Drawable d) @@ -205,7 +207,7 @@ RXImage *RGetXImage(RContext * context, Drawable d, int x, int y, unsigned width } } if (!ximg) { - ximg = malloc(sizeof(RXImage)); + ximg = wmalloc(sizeof(RXImage)); if (!ximg) { RErrorCode = RERR_NOMEMORY; return NULL; @@ -214,7 +216,7 @@ RXImage *RGetXImage(RContext * context, Drawable d, int x, int y, unsigned width ximg->image = XGetImage(context->dpy, d, x, y, width, height, AllPlanes, ZPixmap); } #else /* !USE_XSHM */ - ximg = malloc(sizeof(RXImage)); + ximg = wmalloc(sizeof(RXImage)); if (!ximg) { RErrorCode = RERR_NOMEMORY; return NULL; @@ -224,7 +226,7 @@ RXImage *RGetXImage(RContext * context, Drawable d, int x, int y, unsigned width #endif /* !USE_XSHM */ if (ximg->image == NULL) { - free(ximg); + wfree(ximg); return NULL; } diff --git a/wutil-rs/src/memory.rs b/wutil-rs/src/memory.rs index 753f0246..b5aae74b 100644 --- a/wutil-rs/src/memory.rs +++ b/wutil-rs/src/memory.rs @@ -114,7 +114,7 @@ pub mod ffi { use std::{ffi::c_void, ptr}; /// Allocates `size` bytes. Returns null if `size` is 0. Data will be - /// initialized but have an arbitrary value. + /// initialized to 0. #[unsafe(no_mangle)] pub unsafe extern "C" fn wmalloc(size: usize) -> *mut c_void { alloc_bytes(size).cast::()