]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_reply_selection_request): Properly handle format ==
authorAndreas Schwab <schwab@suse.de>
Mon, 26 May 2008 12:03:03 +0000 (12:03 +0000)
committerAndreas Schwab <schwab@suse.de>
Mon, 26 May 2008 12:03:03 +0000 (12:03 +0000)
32.  Always send multiples of format size.

src/ChangeLog
src/xselect.c

index b6180e5a22409a68da173044a047ca18d61652c2..0cb744d5b62ebc9e8f2cf75af468ad5a95f283f8 100644 (file)
@@ -1,5 +1,8 @@
 2008-05-26  Andreas Schwab  <schwab@suse.de>
 
+       * xselect.c (x_reply_selection_request): Properly handle format ==
+       32.  Always send multiples of format size.
+
        * xterm.c (x_set_frame_alpha): Fix type mismatch.
 
 2008-05-26  Jason Rumney  <jasonr@gnu.org>
index 0d09f138d454bc1df38ee3ae8f28060e2c365a3d..dd5c1dcc6baa9d2ed994521c24f12d94ba5017c6 100644 (file)
@@ -808,7 +808,7 @@ x_reply_selection_request (event, format, data, size, type)
        {
           int i = ((bytes_remaining < max_bytes)
                    ? bytes_remaining
-                   : max_bytes);
+                   : max_bytes) / format_bytes;
 
          BLOCK_INPUT;
 
@@ -816,15 +816,18 @@ x_reply_selection_request (event, format, data, size, type)
            = expect_property_change (display, window, reply.property,
                                      PropertyDelete);
 
-         TRACE1 ("Sending increment of %d bytes", i);
+         TRACE1 ("Sending increment of %d elements", i);
          TRACE1 ("Set %s to increment data",
                  XGetAtomName (display, reply.property));
 
          /* Append the next chunk of data to the property.  */
          XChangeProperty (display, window, reply.property, type, format,
-                          PropModeAppend, data, i / format_bytes);
-         bytes_remaining -= i;
-         data += i;
+                          PropModeAppend, data, i);
+         bytes_remaining -= i * format_bytes;
+         if (format == 32)
+           data += i * sizeof (long);
+         else
+           data += i * format_bytes;
          XFlush (display);
          had_errors = x_had_errors_p (display);
          UNBLOCK_INPUT;