]> git.eshelyaron.com Git - emacs.git/commitdiff
* xselect.c (x_check_property_data): Return correct size (Bug#8335).
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 24 Mar 2011 04:17:44 +0000 (21:17 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 24 Mar 2011 04:17:44 +0000 (21:17 -0700)
src/ChangeLog
src/xselect.c

index a8bda0915f6f00c0ae10a560c6ee7bded41b84fa..cdde9673fbde7554055e56cf988fcc814aeeeddb 100644 (file)
@@ -1,3 +1,7 @@
+2011-03-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xselect.c (x_check_property_data): Return correct size (Bug#8335).
+
 2011-03-23  Paul Eggert  <eggert@cs.ucla.edu>
 
        * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow
index 5254fa96838e27036230808995f3cae7003c46f0..451b2a0b13fc2c9dda51b3b3303486c0bf9c45a5 100644 (file)
@@ -2190,7 +2190,8 @@ and t is the same as `SECONDARY'.  */)
 ***********************************************************************/
 /* Check that lisp values are of correct type for x_fill_property_data.
    That is, number, string or a cons with two numbers (low and high 16
-   bit parts of a 32 bit number).  */
+   bit parts of a 32 bit number).  Return the number of items in DATA,
+   or -1 if there is an error.  */
 
 int
 x_check_property_data (Lisp_Object data)
@@ -2198,15 +2199,16 @@ x_check_property_data (Lisp_Object data)
   Lisp_Object iter;
   int size = 0;
 
-  for (iter = data; CONSP (iter) && size != -1; iter = XCDR (iter), ++size)
+  for (iter = data; CONSP (iter); iter = XCDR (iter))
     {
       Lisp_Object o = XCAR (iter);
 
       if (! NUMBERP (o) && ! STRINGP (o) && ! CONSP (o))
-        size = -1;
+        return -1;
       else if (CONSP (o) &&
                (! NUMBERP (XCAR (o)) || ! NUMBERP (XCDR (o))))
-        size = -1;
+        return -1;
+      size++;
     }
 
   return size;