Clean up internal clipboard handling
We now filter incoming data, which means we can start assuming the
clipboard data is always null terminated. This allows us to clean
up a lot of the internal handling.
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 15a3ec4..5e49599 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -232,7 +232,7 @@
damage(FL_DAMAGE_USER1, r.tl.x + x(), r.tl.y + y(), r.width(), r.height());
}
-void Viewport::serverCutText(const char* str, rdr::U32 len)
+void Viewport::serverCutText(const char* str)
{
char *buffer;
int size, ret;
@@ -242,7 +242,7 @@
if (!acceptClipboard)
return;
- size = fl_utf8froma(NULL, 0, str, len);
+ size = fl_utf8froma(NULL, 0, str, strlen(str));
if (size <= 0)
return;
@@ -250,7 +250,7 @@
buffer = new char[size];
- ret = fl_utf8froma(buffer, size, str, len);
+ ret = fl_utf8froma(buffer, size, str, strlen(str));
assert(ret < size);
vlog.debug("Got clipboard data (%d bytes)", (int)strlen(buffer));
@@ -577,7 +577,7 @@
vlog.debug("Sending clipboard data (%d bytes)", (int)strlen(filtered));
try {
- cc->writer()->writeClientCutText(filtered, strlen(filtered));
+ cc->writer()->writeClientCutText(filtered);
} catch (rdr::Exception& e) {
vlog.error("%s", e.str());
exit_vncviewer(e.str());
@@ -768,7 +768,7 @@
size_t len = strlen(pendingClientCutText);
vlog.debug("Sending pending clipboard data (%d bytes)", (int)len);
try {
- cc->writer()->writeClientCutText(pendingClientCutText, len);
+ cc->writer()->writeClientCutText(pendingClientCutText);
} catch (rdr::Exception& e) {
vlog.error("%s", e.str());
exit_vncviewer(e.str());