@@ -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