Index: ChangeLog =================================================================== RCS file: /cvsroot/ratpoison/ratpoison/ChangeLog,v retrieving revision 1.418 diff -u -p -r1.418 ChangeLog --- ChangeLog 8 Mar 2006 00:33:29 -0000 1.418 +++ ChangeLog 10 Mar 2006 18:47:54 -0000 @@ -1,3 +1,8 @@ +2006-04-10 Bernhard R. Link
+ + * src/manage.c (maximize_transient,maximize_normal): + do not device by zero encountering strange resize_inc values. + 2006-03-07 Shawn Betts * src/main.c (clean_up): properly free rp_frame_numset Index: src/manage.c =================================================================== RCS file: /cvsroot/ratpoison/ratpoison/src/manage.c,v retrieving revision 1.92 diff -u -p -r1.92 manage.c --- src/manage.c 5 Jan 2006 04:36:07 -0000 1.92 +++ src/manage.c 10 Mar 2006 18:47:55 -0000 @@ -649,17 +649,23 @@ maximize_transient (rp_window *win) int amount; int delta; - amount = maxx - win->width; - delta = amount % win->hints->width_inc; - amount -= delta; - if (amount < 0 && delta) amount -= win->hints->width_inc; - maxx = amount + win->width; - - amount = maxy - win->height; - delta = amount % win->hints->height_inc; - amount -= delta; - if (amount < 0 && delta) amount -= win->hints->height_inc; - maxy = amount + win->height; + if (win->hints->width_inc) + { + amount = maxx - win->width; + delta = amount % win->hints->width_inc; + amount -= delta; + if (amount < 0 && delta) amount -= win->hints->width_inc; + maxx = amount + win->width; + } + + if (win->hints->height_inc) + { + amount = maxy - win->height; + delta = amount % win->hints->height_inc; + amount -= delta; + if (amount < 0 && delta) amount -= win->hints->height_inc; + maxy = amount + win->height; + } } PRINT_DEBUG (("maxsize: %d %d\n", maxx, maxy)); @@ -733,17 +739,23 @@ maximize_normal (rp_window *win) int amount; int delta; - amount = maxx - win->width; - delta = amount % win->hints->width_inc; - if (amount < 0 && delta) amount -= win->hints->width_inc; - amount -= delta; - maxx = amount + win->width; - - amount = maxy - win->height; - delta = amount % win->hints->height_inc; - if (amount < 0 && delta) amount -= win->hints->height_inc; - amount -= delta; - maxy = amount + win->height; + if (win->hints->width_inc) + { + amount = maxx - win->width; + delta = amount % win->hints->width_inc; + if (amount < 0 && delta) amount -= win->hints->width_inc; + amount -= delta; + maxx = amount + win->width; + } + + if (win->hints->height_inc) + { + amount = maxy - win->height; + delta = amount % win->hints->height_inc; + if (amount < 0 && delta) amount -= win->hints->height_inc; + amount -= delta; + maxy = amount + win->height; + } } PRINT_DEBUG (("maxsize: %d %d\n", maxx, maxy));