=== modified file 'src/window.c' --- src/window.c 2014-02-21 08:02:05 +0000 +++ src/window.c 2014-02-21 20:25:41 +0000 @@ -3702,8 +3702,9 @@ (Lisp_Object window, Lisp_Object size, Lisp_Object add) { struct window *w = decode_valid_window (window); - EMACS_INT size_min = NILP (add) ? 0 : - XINT (w->new_pixel); - EMACS_INT size_max = size_min + min (INT_MAX, MOST_POSITIVE_FIXNUM); + EMACS_INT new_pixel = NILP (add) ? 0 : XINT (w->new_pixel); + EMACS_INT size_min = max (INT_MIN, MOST_NEGATIVE_FIXNUM) - new_pixel; + EMACS_INT size_max = min (INT_MAX, MOST_POSITIVE_FIXNUM) - new_pixel; CHECK_RANGED_INTEGER (size, size_min, size_max); if (NILP (add))