summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-09-05 09:51:05 +0800
committerPo Lu <luangruo@yahoo.com>2022-09-05 09:51:22 +0800
commit21c8a9d944b37e431f56738c10a9fa7a75f4c3a9 (patch)
treec84a5ed76e82c35c2634d52354e1bacfde43ec58
parentf07505d1ecf15ca9f6e6461e042092ceee96cc25 (diff)
downloademacs-21c8a9d944b37e431f56738c10a9fa7a75f4c3a9.tar.gz
Fix crash while converting empty vector to X data
* 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.
-rw-r--r--src/xselect.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/xselect.c b/src/xselect.c
index 74d762f3055..66782d41723 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -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;