diff options
author | Po Lu <luangruo@yahoo.com> | 2022-09-05 09:51:05 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-09-05 09:51:22 +0800 |
commit | 21c8a9d944b37e431f56738c10a9fa7a75f4c3a9 (patch) | |
tree | c84a5ed76e82c35c2634d52354e1bacfde43ec58 | |
parent | f07505d1ecf15ca9f6e6461e042092ceee96cc25 (diff) | |
download | emacs-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.c | 12 |
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; |