Subject: bug#11738: 24.1.50; Regression: `modify-frame-parameters' is broken for `left' & `top'

From: Chong Yidong <[email-masked]>
Date: Wed, 18 Jul 2012 16:10:23 +0800

"Drew Adams" <[email-masked]> writes:

> emacs -Q
> In *scratch*:
> (setq new (- (frame-parameter nil 'left) 10))
> (setq new `(left + ,new))
> (modify-frame-parameters nil (list new))
>  
> IOW, try to set `left' or `top' to a value that is a cons whose car is
> `left' or `top', whose cadr is `+' or `-', and whose caddr is some new
> value.  Nothing happens.

Paul Eggert's revision 108370 is responsible.  The part below was bogus;
reverted in trunk.  Paul---please be more careful when doing such
code-churning.

***************
*** 2913,2919 ****
      }
  
    /* Don't die if just one of these was set.  */
!   if (EQ (left, Qunbound))
      {
        left_no_change = 1;
        if (f->left_pos < 0)
--- 2916,2922 ----
      }
  
    /* Don't die if just one of these was set.  */
!   if (! TYPE_RANGED_INTEGERP (int, left))
      {
        left_no_change = 1;
        if (f->left_pos < 0)
***************
*** 2921,2927 ****
        else
  	XSETINT (left, f->left_pos);
      }
!   if (EQ (top, Qunbound))
      {
        top_no_change = 1;
        if (f->top_pos < 0)
--- 2924,2930 ----
        else
  	XSETINT (left, f->left_pos);
      }
!   if (! TYPE_RANGED_INTEGERP (int, top))
      {
        top_no_change = 1;
        if (f->top_pos < 0)