Make sure we can handle clipboard data of any size.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4454 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index f522ca0..91daf9e 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -192,22 +192,27 @@
int Viewport::handle(int event)
{
- char buffer[1024];
+ char *buffer;
int ret;
int buttonMask, wheelMask;
DownMap::const_iterator iter;
switch (event) {
case FL_PASTE:
+ buffer = new char[Fl::event_length() + 1];
+
// This is documented as to ASCII, but actually does to 8859-1
- ret = fl_utf8toa(Fl::event_text(), Fl::event_length(), buffer, sizeof(buffer));
- if (ret >= sizeof(buffer)) {
- vlog.error(_("Clipboard buffer overflow!"));
- return 1;
- }
+ ret = fl_utf8toa(Fl::event_text(), Fl::event_length(), buffer,
+ Fl::event_length() + 1);
+ assert(ret < (Fl::event_length() + 1));
+
vlog.debug("Sending clipboard data: '%s'", buffer);
cc->writer()->clientCutText(buffer, ret);
+
+ delete [] buffer;
+
return 1;
+
case FL_ENTER:
// Yes, we would like some pointer events please!
return 1;