tFix crash on resize - st - [fork] customized build of st, the simple terminal | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 29f341da7cf32888f45005e08de202d9a372d972 | |
parent dc3b5babf1f8639a0d65cd347fc7879ac0461012 | |
Author: Jules Maselbas <[email protected]> | |
Date: Wed, 27 Jun 2018 17:08:30 +0200 | |
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. | |
Diffstat: | |
M x.c | 12 ++++++++---- | |
1 file changed, 8 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/x.c b/x.c | |
t@@ -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); | |
t@@ -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, | |
t@@ -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; | |
} |