diff options
| author | Jules Maselbas <jules.maselbas@grenoble-inp.org> | 2018-06-27 17:08:30 +0200 | 
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2018-06-30 20:51:46 +0200 | 
| commit | 29f341da7cf32888f45005e08de202d9a372d972 (patch) | |
| tree | 920410155c668968d28c1a6a62953c827ff27bb8 | |
| parent | dc3b5babf1f8639a0d65cd347fc7879ac0461012 (diff) | |
| download | st-29f341da7cf32888f45005e08de202d9a372d972.tar.gz st-29f341da7cf32888f45005e08de202d9a372d972.tar.bz2 | |
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.c | 12 | 
1 files changed, 8 insertions, 4 deletions
| @@ -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;  	} | 
