1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-21 04:06:46 +00:00

- Fix crash to paste from non-ICCCM clients

- Bump PORTREVISION

PR:		ports/156542
Submitted by:	Marcin Cieslak <saper@saper.info>
Approved by:	maintainer
This commit is contained in:
Dennis Herrmann 2011-06-20 14:50:18 +00:00
parent 388237cb87
commit abb9688e7d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=275901
2 changed files with 53 additions and 1 deletions

View File

@ -9,7 +9,7 @@
PORTNAME= rxvt
PORTVERSION= 2.6.4
PORTREVISION= 5
PORTREVISION= 6
CATEGORIES+= x11
MASTER_SITES= SF

View File

@ -0,0 +1,52 @@
--- src/screen.c.orig 2011-04-21 08:56:56.000000000 +0200
+++ src/screen.c 2011-04-21 08:59:19.000000000 +0200
@@ -3359,6 +3359,7 @@
XEvent ev;
Atom32 target_list[4];
Atom target;
+ Atom property;
static Atom xa_targets = None;
static Atom xa_compound_text = None;
static Atom xa_text = None;
@@ -3381,16 +3382,26 @@
ev.xselection.target = rq->target;
ev.xselection.time = rq->time;
+ /* ICCCM: 2.2. Responsibilities of the Selection Owner
+ * SelectionRequest:
+ * If the specified property is None , the requestor
+ * an obsolete client. Owners are encouraged
+ * to support these clients by using the specified
+ * target atom as the property name to be used for
+ * the reply.
+ */
+ property = (rq->property == 0) ? rq->target : rq->property;
+
if (rq->target == xa_targets) {
target_list[0] = (Atom32) xa_targets;
target_list[1] = (Atom32) XA_STRING;
target_list[2] = (Atom32) xa_text;
target_list[3] = (Atom32) xa_compound_text;
- XChangeProperty(Xdisplay, rq->requestor, rq->property, rq->target,
+ XChangeProperty(Xdisplay, rq->requestor, property, rq->target,
(8 * sizeof(target_list[0])), PropModeReplace,
(unsigned char *)target_list,
(sizeof(target_list) / sizeof(target_list[0])));
- ev.xselection.property = rq->property;
+ ev.xselection.property = property;
} else if (rq->target == XA_STRING
|| rq->target == xa_compound_text
|| rq->target == xa_text) {
@@ -3404,10 +3415,10 @@
}
cl[0] = selection.text;
XmbTextListToTextProperty(Xdisplay, cl, 1, style, &ct);
- XChangeProperty(Xdisplay, rq->requestor, rq->property,
+ XChangeProperty(Xdisplay, rq->requestor, property,
target, 8, PropModeReplace,
ct.value, ct.nitems);
- ev.xselection.property = rq->property;
+ ev.xselection.property = property;
}
XSendEvent(Xdisplay, rq->requestor, False, 0, &ev);
}