Skip to content

Commit b1a9e3d

Browse files
authored
Merge pull request #16 from ebiggers/master
INCR transfer bug fixes
2 parents 9674445 + cc44281 commit b1a9e3d

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

xsel.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -620,14 +620,15 @@ get_append_property (XSelectionEvent * xsl, unsigned char ** buffer,
620620
print_debug (D_TRACE, "Got zero length property; end of INCR transfer");
621621
return False;
622622
} else if (format == 8) {
623-
if (*offset + length > *alloc) {
624-
*alloc = *offset + length;
623+
if (*offset + length + 1 > *alloc) {
624+
*alloc = *offset + length + 1;
625625
if ((*buffer = realloc (*buffer, *alloc)) == NULL) {
626626
exit_err ("realloc error");
627627
}
628628
}
629629
ptr = *buffer + *offset;
630-
xs_strncpy (ptr, value, length);
630+
memcpy (ptr, value, length);
631+
ptr[length] = '\0';
631632
*offset += length;
632633
print_debug (D_TRACE, "Appended %d bytes to buffer\n", length);
633634
} else {
@@ -1299,13 +1300,13 @@ change_property (Display * display, Window requestor, Atom property,
12991300
print_debug (D_TRACE, "large data transfer");
13001301

13011302

1302-
/* Send a SelectionNotify event of type INCR */
1303+
/* Send a SelectionNotify event */
13031304
ev.type = SelectionNotify;
13041305
ev.display = display;
13051306
ev.requestor = requestor;
13061307
ev.selection = selection;
13071308
ev.time = time;
1308-
ev.target = incr_atom; /* INCR */
1309+
ev.target = target;
13091310
ev.property = property;
13101311

13111312
XSelectInput (ev.display, ev.requestor, PropertyChangeMask);

0 commit comments

Comments
 (0)