From 21c8a9d944b37e431f56738c10a9fa7a75f4c3a9 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 5 Sep 2022 09:51:05 +0800 Subject: [PATCH] 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. --- src/xselect.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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; -- 2.39.2