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/CConn.cxx b/vncviewer/CConn.cxx
index 28c8abb..bc7b948 100644
--- a/vncviewer/CConn.cxx
+++ b/vncviewer/CConn.cxx
@@ -339,18 +339,25 @@
 
 void CConn::serverCutText(const char* str, rdr::U32 len)
 {
-  char buffer[1024];
-  int ret;
+  char *buffer;
+  int size, ret;
 
-  ret = fl_utf8froma(buffer, sizeof(buffer), str, len);
-  if (ret >= sizeof(buffer)) {
-    vlog.error(_("Clipboard buffer overflow!"));
+  size = fl_utf8froma(NULL, 0, str, len);
+  if (size <= 0)
     return;
-  }
+
+  size++;
+
+  buffer = new char[size];
+
+  ret = fl_utf8froma(buffer, size, str, len);
+  assert(ret < size);
 
   vlog.debug("Got clipboard data: '%s'", buffer);
 
   Fl::copy(buffer, ret, 1);
+
+  delete [] buffer;
 }
 
 // We start timing on beginRect and stop timing on endRect, to