]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix crash while converting empty vector to X data
authorPo Lu <luangruo@yahoo.com>
Mon, 5 Sep 2022 01:51:05 +0000 (09:51 +0800)
committerPo Lu <luangruo@yahoo.com>
Mon, 5 Sep 2022 01:51:22 +0000 (09:51 +0800)
* src/xselect.c (lisp_data_to_selection_data): Assume an empty
vector represents INTEGER data, instead of blindly trying to
aref it's first element.

src/xselect.c

index 74d762f3055fb87e1d920a5cc9b72922c0e1f194..66782d41723bc9353a5521cc33a9b3a1c8644e95 100644 (file)
@@ -2017,7 +2017,17 @@ lisp_data_to_selection_data (struct x_display_info *dpyinfo,
       ptrdiff_t i;
       ptrdiff_t size = ASIZE (obj);
 
-      if (SYMBOLP (AREF (obj, 0)))
+      if (!size)
+       {
+         /* This vector is empty and of unknown type.  Assume that it
+            is a vector of integers.  */
+
+         cs->data = NULL;
+         cs->format = 32;
+         cs->size = 0;
+         type = QINTEGER;
+       }
+      else if (SYMBOLP (AREF (obj, 0)))
        /* This vector is an ATOM set */
        {
          void *data;