aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Maselbas <jules.maselbas@grenoble-inp.org>2018-06-27 17:08:30 +0200
committerHiltjo Posthuma <hiltjo@codemadness.org>2018-06-30 20:51:46 +0200
commit29f341da7cf32888f45005e08de202d9a372d972 (patch)
tree920410155c668968d28c1a6a62953c827ff27bb8
parentdc3b5babf1f8639a0d65cd347fc7879ac0461012 (diff)
downloadst-29f341da7cf32888f45005e08de202d9a372d972.tar.gz
st-29f341da7cf32888f45005e08de202d9a372d972.tar.bz2
st-29f341da7cf32888f45005e08de202d9a372d972.zip
Fix crash on resize
Prevent to realloc xw.specbuc with a negative number of col. Add proper hints for the minimal size, for one character.
-rw-r--r--x.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/x.c b/x.c
index c0bd890..00cb6b1 100644
--- a/x.c
+++ b/x.c
@@ -672,6 +672,8 @@ cresize(int width, int height)
col = (win.w - 2 * borderpx) / win.cw;
row = (win.h - 2 * borderpx) / win.ch;
+ col = MAX(1, col);
+ row = MAX(1, row);
tresize(col, row);
xresize(col, row);
@@ -681,8 +683,8 @@ cresize(int width, int height)
void
xresize(int col, int row)
{
- win.tw = MAX(1, col * win.cw);
- win.th = MAX(1, row * win.ch);
+ win.tw = col * win.cw;
+ win.th = row * win.ch;
XFreePixmap(xw.dpy, xw.buf);
xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
@@ -788,15 +790,17 @@ xhints(void)
sizeh = XAllocSizeHints();
- sizeh->flags = PSize | PResizeInc | PBaseSize;
+ sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
sizeh->height = win.h;
sizeh->width = win.w;
sizeh->height_inc = win.ch;
sizeh->width_inc = win.cw;
sizeh->base_height = 2 * borderpx;
sizeh->base_width = 2 * borderpx;
+ sizeh->min_height = win.ch + 2 * borderpx;
+ sizeh->min_width = win.cw + 2 * borderpx;
if (xw.isfixed) {
- sizeh->flags |= PMaxSize | PMinSize;
+ sizeh->flags |= PMaxSize;
sizeh->min_width = sizeh->max_width = win.w;
sizeh->min_height = sizeh->max_height = win.h;
}