Wayland: Fix partial writes of clipboard string

The string pointer used to write the contents of our clipboard data
offer was never updated, causing it to repeat parts of the beginning of
the string until the correct number of bytes had been written.

(cherry picked from commit 4c110bba41)
This commit is contained in:
Camilla Löwy 2022-03-22 19:23:25 +01:00
parent 2430d6b7f7
commit 25db8f8014
2 changed files with 3 additions and 1 deletions

View File

@ -132,6 +132,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: `glfwSetClipboardString` would fail if set to result of - [Wayland] Bugfix: `glfwSetClipboardString` would fail if set to result of
`glfwGetClipboardString` `glfwGetClipboardString`
- [Wayland] Bugfix: Data source creation error would cause double free at termination - [Wayland] Bugfix: Data source creation error would cause double free at termination
- [Wayland] Bugfix: Partial writes of clipboard string would cause beginning to repeat
## Contact ## Contact

View File

@ -1725,7 +1725,7 @@ static void dataSourceHandleSend(void* data,
const char* mimeType, const char* mimeType,
int fd) int fd)
{ {
const char* string = _glfw.wl.clipboardSendString; char* string = _glfw.wl.clipboardSendString;
size_t len = strlen(string); size_t len = strlen(string);
int ret; int ret;
@ -1765,6 +1765,7 @@ static void dataSourceHandleSend(void* data,
return; return;
} }
len -= ret; len -= ret;
string += ret;
} }
close(fd); close(fd);
} }