aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calmwm.h3
-rw-r--r--group.c4
-rw-r--r--xmalloc.c14
-rw-r--r--xutil.c10
4 files changed, 22 insertions, 9 deletions
diff --git a/calmwm.h b/calmwm.h
index 03783cd..748db69 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -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)))
diff --git a/group.c b/group.c
index a5f4859..d18ece8 100644
--- a/group.c
+++ b/group.c
@@ -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) {
diff --git a/xmalloc.c b/xmalloc.c
index 94f0691..21a65d7 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -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)
{
diff --git a/xutil.c b/xutil.c
index 4529075..2d4ab87 100644
--- a/xutil.c
+++ b/xutil.c
@@ -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] &&