diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/xselect.c | 8 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 9f8361153a1..fd3de54c3e9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2011-09-14 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * xselect.c: Use signed conversions more consistently (Bug#9498). | ||
| 4 | (selection_data_to_lisp_data): Assume incoming selection data are | ||
| 5 | signed integers, not unsigned. This is to be consistent with | ||
| 6 | outgoing selection data, which was modified to use signed integers | ||
| 7 | in as part of the fix to Bug#9196 in response to Jan D.'s comment | ||
| 8 | in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#32> that X11 | ||
| 9 | expects long, not unsigned long. | ||
| 10 | |||
| 1 | 2011-09-14 Eli Zaretskii <eliz@gnu.org> | 11 | 2011-09-14 Eli Zaretskii <eliz@gnu.org> |
| 2 | 12 | ||
| 3 | * xdisp.c (try_window_reusing_current_matrix): Fix incorrect | 13 | * xdisp.c (try_window_reusing_current_matrix): Fix incorrect |
diff --git a/src/xselect.c b/src/xselect.c index 241622e81b3..29e8552bb9c 100644 --- a/src/xselect.c +++ b/src/xselect.c | |||
| @@ -1685,9 +1685,9 @@ selection_data_to_lisp_data (Display *display, const unsigned char *data, | |||
| 1685 | convert it to a cons of integers, 16 bits in each half. | 1685 | convert it to a cons of integers, 16 bits in each half. |
| 1686 | */ | 1686 | */ |
| 1687 | else if (format == 32 && size == sizeof (int)) | 1687 | else if (format == 32 && size == sizeof (int)) |
| 1688 | return INTEGER_TO_CONS (((unsigned int *) data) [0]); | 1688 | return INTEGER_TO_CONS (((int *) data) [0]); |
| 1689 | else if (format == 16 && size == sizeof (short)) | 1689 | else if (format == 16 && size == sizeof (short)) |
| 1690 | return make_number (((unsigned short *) data) [0]); | 1690 | return make_number (((short *) data) [0]); |
| 1691 | 1691 | ||
| 1692 | /* Convert any other kind of data to a vector of numbers, represented | 1692 | /* Convert any other kind of data to a vector of numbers, represented |
| 1693 | as above (as an integer, or a cons of two 16 bit integers.) | 1693 | as above (as an integer, or a cons of two 16 bit integers.) |
| @@ -1699,7 +1699,7 @@ selection_data_to_lisp_data (Display *display, const unsigned char *data, | |||
| 1699 | v = Fmake_vector (make_number (size / 2), make_number (0)); | 1699 | v = Fmake_vector (make_number (size / 2), make_number (0)); |
| 1700 | for (i = 0; i < size / 2; i++) | 1700 | for (i = 0; i < size / 2; i++) |
| 1701 | { | 1701 | { |
| 1702 | EMACS_INT j = ((unsigned short *) data) [i]; | 1702 | EMACS_INT j = ((short *) data) [i]; |
| 1703 | Faset (v, make_number (i), make_number (j)); | 1703 | Faset (v, make_number (i), make_number (j)); |
| 1704 | } | 1704 | } |
| 1705 | return v; | 1705 | return v; |
| @@ -1711,7 +1711,7 @@ selection_data_to_lisp_data (Display *display, const unsigned char *data, | |||
| 1711 | make_number (0)); | 1711 | make_number (0)); |
| 1712 | for (i = 0; i < size / X_LONG_SIZE; i++) | 1712 | for (i = 0; i < size / X_LONG_SIZE; i++) |
| 1713 | { | 1713 | { |
| 1714 | unsigned int j = ((unsigned int *) data) [i]; | 1714 | int j = ((int *) data) [i]; |
| 1715 | Faset (v, make_number (i), INTEGER_TO_CONS (j)); | 1715 | Faset (v, make_number (i), INTEGER_TO_CONS (j)); |
| 1716 | } | 1716 | } |
| 1717 | return v; | 1717 | return v; |