Introduce a xreallocarray and convert a few xcalloc instances that do

not require zero'ing.
This commit is contained in:
okan 2015-03-28 23:12:47 +00:00
parent d42a248920
commit 32d16969bc
4 changed files with 22 additions and 9 deletions

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: calmwm.h,v 1.285 2015/03/26 21:41:43 okan Exp $
* $OpenBSD: calmwm.h,v 1.286 2015/03/28 23:12:47 okan Exp $
*/
#ifndef _CALMWM_H_
@ -559,6 +559,7 @@ void u_spawn(char *);
void *xcalloc(size_t, size_t);
void *xmalloc(size_t);
void *xreallocarray(void *, size_t, size_t);
char *xstrdup(const char *);
int xasprintf(char **, const char *, ...)
__attribute__((__format__ (printf, 2, 3)))

View File

@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: group.c,v 1.110 2015/01/19 14:54:16 okan Exp $
* $OpenBSD: group.c,v 1.111 2015/03/28 23:12:47 okan Exp $
*/
#include <sys/types.h>
@ -91,7 +91,7 @@ group_restack(struct group_ctx *gc)
if (cc->stackingorder > highstack)
highstack = cc->stackingorder;
}
winlist = xcalloc((highstack + 1), sizeof(*winlist));
winlist = xreallocarray(NULL, (highstack + 1), sizeof(*winlist));
/* Invert the stacking order for XRestackWindows(). */
TAILQ_FOREACH(cc, &gc->clientq, group_entry) {

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: xmalloc.c,v 1.14 2015/01/19 14:54:16 okan Exp $
* $OpenBSD: xmalloc.c,v 1.15 2015/03/28 23:12:47 okan Exp $
*/
#include <sys/types.h>
@ -61,6 +61,18 @@ xcalloc(size_t no, size_t siz)
return(p);
}
void *
xreallocarray(void *ptr, size_t nmemb, size_t size)
{
void *p;
p = reallocarray(ptr, nmemb, size);
if (p == NULL)
errx(1, "xreallocarray: out of memory (new_size %zu bytes)",
nmemb * size);
return(p);
}
char *
xstrdup(const char *str)
{

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: xutil.c,v 1.98 2015/03/28 21:55:48 okan Exp $
* $OpenBSD: xutil.c,v 1.99 2015/03/28 23:12:47 okan Exp $
*/
#include <sys/types.h>
@ -220,7 +220,7 @@ xu_ewmh_net_client_list(struct screen_ctx *sc)
if (i == 0)
return;
winlist = xcalloc(i, sizeof(*winlist));
winlist = xreallocarray(NULL, i, sizeof(*winlist));
TAILQ_FOREACH(cc, &sc->clientq, entry)
winlist[j++] = cc->win;
XChangeProperty(X_Dpy, sc->rootwin, ewmh[_NET_CLIENT_LIST],
@ -320,7 +320,7 @@ xu_ewmh_net_desktop_names(struct screen_ctx *sc)
TAILQ_FOREACH(gc, &sc->groupq, entry)
len += strlen(gc->name) + 1;
q = p = xcalloc(len, sizeof(*p));
q = p = xreallocarray(NULL, len, sizeof(*p));
tlen = len;
TAILQ_FOREACH(gc, &sc->groupq, entry) {
@ -357,7 +357,7 @@ xu_ewmh_get_net_wm_state(struct client_ctx *cc, int *n)
(unsigned char **)&p)) <= 0)
return(NULL);
state = xcalloc(*n, sizeof(Atom));
state = xreallocarray(NULL, *n, sizeof(Atom));
(void)memcpy(state, p, *n * sizeof(Atom));
XFree((char *)p);
@ -444,7 +444,7 @@ xu_ewmh_set_net_wm_state(struct client_ctx *cc)
int n, i, j;
oatoms = xu_ewmh_get_net_wm_state(cc, &n);
atoms = xcalloc((n + _NET_WM_STATES_NITEMS), sizeof(Atom));
atoms = xreallocarray(NULL, (n + _NET_WM_STATES_NITEMS), sizeof(Atom));
for (i = j = 0; i < n; i++) {
if (oatoms[i] != ewmh[_NET_WM_STATE_STICKY] &&
oatoms[i] != ewmh[_NET_WM_STATE_MAXIMIZED_HORZ] &&