Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PoroCYon
Bonzomatic
Commits
6986b8e6
Commit
6986b8e6
authored
Mar 26, 2019
by
Gargaj
Browse files
fix memory corruption in clipboard copying
was copying WCHAR size instead of char (wtf)
parent
7269a05f
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/platform_w32_common/Clipboard.cpp
View file @
6986b8e6
...
...
@@ -5,19 +5,19 @@ namespace Clipboard
void
Copy
(
const
char
*
data
,
int
len
)
{
HWND
hWnd
=
GetForegroundWindow
();
if
(
!::
OpenClipboard
(
hWnd
))
if
(
!::
OpenClipboard
(
hWnd
)
)
return
;
EmptyClipboard
();
HGLOBAL
h
=
GlobalAlloc
(
GMEM_MOVEABLE
,
(
len
+
1
)
*
sizeof
(
WCHAR
)
);
WCHAR
*
pMem
=
(
WCHAR
*
)
GlobalLock
(
h
);
HGLOBAL
h
=
GlobalAlloc
(
GMEM_MOVEABLE
,
(
len
+
1
)
*
sizeof
(
char
)
);
WCHAR
*
pMem
=
(
WCHAR
*
)
GlobalLock
(
h
);
ZeroMemory
(
pMem
,
(
len
+
1
)
*
sizeof
(
WCHAR
)
);
CopyMemory
(
pMem
,
data
,
(
len
+
1
)
*
sizeof
(
WCHAR
)
);
ZeroMemory
(
pMem
,
(
len
+
1
)
*
sizeof
(
char
)
);
CopyMemory
(
pMem
,
data
,
(
len
+
1
)
*
sizeof
(
char
)
);
GlobalUnlock
(
h
);
SetClipboardData
(
CF_TEXT
,
h
);
GlobalUnlock
(
h
);
SetClipboardData
(
CF_TEXT
,
h
);
CloseClipboard
();
}
...
...
@@ -25,12 +25,12 @@ namespace Clipboard
int
GetContentsLength
()
{
HWND
hWnd
=
GetForegroundWindow
();
if
(
!::
OpenClipboard
(
hWnd
))
if
(
!::
OpenClipboard
(
hWnd
)
)
return
0
;
HANDLE
hData
=
GetClipboardData
(
CF_TEXT
);
const
char
*
buffer
=
(
const
char
*
)
GlobalLock
(
hData
);
int
n
=
strlen
(
buffer
);
HANDLE
hData
=
GetClipboardData
(
CF_TEXT
);
const
char
*
buffer
=
(
const
char
*
)
GlobalLock
(
hData
);
int
n
=
strlen
(
buffer
);
CloseClipboard
();
...
...
@@ -40,11 +40,11 @@ namespace Clipboard
void
GetContents
(
char
*
data
,
int
len
)
{
HWND
hWnd
=
GetForegroundWindow
();
if
(
!::
OpenClipboard
(
hWnd
))
if
(
!::
OpenClipboard
(
hWnd
)
)
return
;
HANDLE
hData
=
GetClipboardData
(
CF_TEXT
);
const
char
*
buffer
=
(
const
char
*
)
GlobalLock
(
hData
);
HANDLE
hData
=
GetClipboardData
(
CF_TEXT
);
const
char
*
buffer
=
(
const
char
*
)
GlobalLock
(
hData
);
strncpy
(
data
,
buffer
,
len
);
CloseClipboard
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment