Fix last character being truncated in clipboard::copy_text due to off-by-one error (#262)

## Link to GitHub Issue, if one exists
n/a, user reported

## Description of change
When copying text to clipboard, the last character was being dropped due
to incorrect string buffer size calculation.

Also, clean up callers to just pass std:string by reference instead of
going back and forth between C-style strings.

Lastly, fix `git archive` in `build_all.sh` which broke after github
migration.

## Compiling
Yes

## Testing
Tested all three callers - IIDX cam hook, scard reader in Cards tab, and
patch manager datecode.
This commit is contained in:
bicarus-dev
2025-03-15 22:54:13 -07:00
committed by GitHub
parent ab5c343c7d
commit 4c215aa5bb
6 changed files with 8 additions and 8 deletions
+3 -3
View File
@@ -142,14 +142,14 @@ namespace clipboard {
handle.detach();
}
void copy_text(const std::string str) {
void copy_text(const std::string& str) {
if (!OpenClipboard(nullptr)) {
log_warning("clipboard", "Failed to open clipboard");
return;
}
HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, str.length());
memcpy(GlobalLock(mem), str.c_str(), str.length());
HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, str.length() + 1);
memcpy(GlobalLock(mem), str.c_str(), str.length() + 1);
GlobalUnlock(mem);
EmptyClipboard();
+1 -1
View File
@@ -4,6 +4,6 @@
namespace clipboard {
void copy_image(const std::filesystem::path path);
void copy_text(const std::string str);
void copy_text(const std::string& str);
const std::string paste_text();
}