Fix crash on resize - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 29f341da7cf32888f45005e08de202d9a372d972
 (DIR) parent dc3b5babf1f8639a0d65cd347fc7879ac0461012
 (HTM) Author: Jules Maselbas <jules.maselbas@grenoble-inp.org>
       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(-)
       ---
 (DIR) diff --git 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;
                }