--- winsup/cygwin/fhandler_clipboard.cc | 4 ++-- winsup/cygwin/include/sys/clipboard.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/fhandler_clipboard.cc b/winsup/cygwin/fhandler_clipboard.cc index 05f54ffb3..14820701c 100644 --- a/winsup/cygwin/fhandler_clipboard.cc +++ b/winsup/cygwin/fhandler_clipboard.cc @@ -76,7 +76,7 @@ fhandler_dev_clipboard::set_clipboard (const void *buf, size_t len) clipbuf->cb_sec = clipbuf->ts.tv_sec; #endif clipbuf->cb_size = len; - memcpy (&clipbuf[1], buf, len); // append user-supplied data + memcpy (clipbuf->cb_data, buf, len); // append user-supplied data GlobalUnlock (hmem); EmptyClipboard (); @@ -229,7 +229,7 @@ fhandler_dev_clipboard::read (void *ptr, size_t& len) if (pos < (off_t) clipbuf->cb_size) { ret = (len > (clipbuf->cb_size - pos)) ? clipbuf->cb_size - pos : len; - memcpy (ptr, (char *) (clipbuf + 1) + pos, ret); + memcpy (ptr, clipbuf->cb_data + pos, ret); pos += ret; } } diff --git a/winsup/cygwin/include/sys/clipboard.h b/winsup/cygwin/include/sys/clipboard.h index 4c00c8ea1..932fe98d9 100644 --- a/winsup/cygwin/include/sys/clipboard.h +++ b/winsup/cygwin/include/sys/clipboard.h @@ -44,6 +44,7 @@ typedef struct }; }; uint64_t cb_size; // 8 bytes everywhere + char cb_data[]; } cygcb_t; #endif -- 2.34.1