mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-16 21:41:27 +00:00
* xselect.c (x_fill_property_data): Handle negative XCDR when data
is CONSP. Fixes: debbugs:18303
This commit is contained in:
parent
970d21e8e6
commit
eee8ec8442
2 changed files with 23 additions and 1 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2014-09-07 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* xselect.c (x_fill_property_data): Handle negative XCDR when data
|
||||
is CONSP (Bug#18303).
|
||||
|
||||
2014-09-07 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* callproc.c (child_setup) [WINDOWSNT]: Don't call exec_failed if
|
||||
|
|
|
|||
|
|
@ -2299,7 +2299,24 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret, int format)
|
|||
Lisp_Object o = XCAR (iter);
|
||||
|
||||
if (INTEGERP (o) || FLOATP (o) || CONSP (o))
|
||||
val = cons_to_signed (o, LONG_MIN, LONG_MAX);
|
||||
{
|
||||
if (CONSP (o) && INTEGERP (XCAR (o)) && INTEGERP (XCDR (o)))
|
||||
{
|
||||
intmax_t v1 = XINT (XCAR (o));
|
||||
intmax_t v2 = XINT (XCDR (o));
|
||||
/* cons_to_signed does not handle negative values for v2.
|
||||
For XDnd, v2 might be y of a window, and can be negative.
|
||||
The XDnd spec. is not explicit about negative values,
|
||||
but lets do what it says.
|
||||
*/
|
||||
if (v1 < 0 || v2 < 0)
|
||||
val = (v1 << 16) | v2;
|
||||
else
|
||||
val = cons_to_signed (o, LONG_MIN, LONG_MAX);
|
||||
}
|
||||
else
|
||||
val = cons_to_signed (o, LONG_MIN, LONG_MAX);
|
||||
}
|
||||
else if (STRINGP (o))
|
||||
{
|
||||
block_input ();
|
||||
|
|
|
|||
Loading…
Reference in a new issue