forked from AuroraMiddleware/gtk
gdk/win32: remove extra allocation for \r removal
Although I can't find explicit documentation for clipboard pointer, it seems to be possible to modify clibpoard memory without side-effects. According to MSDN, http://msdn.microsoft.com/en-us/library/windows/desktop/aa366596%28v=vs.85%29.aspx "The global and local functions are supported for porting from 16-bit code, or for maintaining source code compatibility with 16-bit Windows. Starting with 32-bit Windows, the global and local functions are implemented as wrapper functions that call the corresponding heap functions using a handle to the process's default heap." "Memory objects allocated by GlobalAlloc and LocalAlloc are in private, committed pages with read/write access that cannot be accessed by other processes. Memory allocated by using GlobalAlloc with GMEM_DDESHARE is not actually shared globally as it is in 16-bit Windows. This value has no effect and is available only for compatibility. " https://bugzilla.gnome.org/show_bug.cgi?id=711553
This commit is contained in:
parent
6130f076be
commit
c486c0983f
@ -530,21 +530,20 @@ _gdk_win32_display_convert_selection (GdkDisplay *display,
|
||||
|
||||
if ((hdata = GetClipboardData (CF_UNICODETEXT)) != NULL)
|
||||
{
|
||||
wchar_t *ptr, *wcs, *p, *q;
|
||||
wchar_t *ptr, *p, *q;
|
||||
guchar *data;
|
||||
glong length, wclen;
|
||||
|
||||
if ((ptr = GlobalLock (hdata)) != NULL)
|
||||
{
|
||||
length = GlobalSize (hdata);
|
||||
|
||||
|
||||
GDK_NOTE (DND, g_print ("... CF_UNICODETEXT: %ld bytes\n",
|
||||
length));
|
||||
|
||||
/* Strip out \r */
|
||||
wcs = g_new (wchar_t, length / 2 + 1);
|
||||
p = ptr;
|
||||
q = wcs;
|
||||
q = ptr;
|
||||
wclen = 0;
|
||||
while (p < ptr + length / 2)
|
||||
{
|
||||
@ -556,8 +555,7 @@ _gdk_win32_display_convert_selection (GdkDisplay *display,
|
||||
p++;
|
||||
}
|
||||
|
||||
data = g_utf16_to_utf8 (wcs, wclen, NULL, NULL, NULL);
|
||||
g_free (wcs);
|
||||
data = g_utf16_to_utf8 (ptr, wclen, NULL, NULL, NULL);
|
||||
|
||||
if (data)
|
||||
selection_property_store (requestor, _utf8_string, 8,
|
||||
|
Loading…
Reference in New Issue
Block a user