summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorGintautas Miliauskas <gintautas.miliauskas@gmail.com>2014-10-29 23:13:31 -0500
committerAustin Seipp <austin@well-typed.com>2014-10-29 23:13:32 -0500
commit5ce1266a7d323fd4fe4262f07be908d65e5b5b43 (patch)
tree0da3dfd51956fd6b9f75f4ee17aa1598c52554f3 /rts
parent257cbec2f605c31d335a6709b43754a88f184d9d (diff)
downloadhaskell-5ce1266a7d323fd4fe4262f07be908d65e5b5b43.tar.gz
Use snwprintf instead of swprintf in rts/Linker.c.
Summary: swprintf has different signatures in mingw32, where it does not include the buffer size, and in mingw-w64, where it does. That of course breaks the code as mingw-w64 treats the pointer to the format string as a size_t. snwprintf is available in both environments and is consistent, so use that instead. Reviewers: simonmar, austin Reviewed By: austin Subscribers: #ghc_windows_task_force, thomie, carter, simonmar Differential Revision: https://phabricator.haskell.org/D372 GHC Trac Issues: #9726
Diffstat (limited to 'rts')
-rw-r--r--rts/Linker.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/rts/Linker.c b/rts/Linker.c
index 35cee2c44c..7d029c62ac 100644
--- a/rts/Linker.c
+++ b/rts/Linker.c
@@ -1968,18 +1968,19 @@ addDLL( pathchar *dll_name )
point character (.) to indicate that the module name has no
extension. */
- buf = stgMallocBytes((pathlen(dll_name) + 10) * sizeof(wchar_t), "addDLL");
- swprintf(buf, L"%s.DLL", dll_name);
+ size_t bufsize = pathlen(dll_name) + 10;
+ buf = stgMallocBytes(bufsize * sizeof(wchar_t), "addDLL");
+ snwprintf(buf, bufsize, L"%s.DLL", dll_name);
instance = LoadLibraryW(buf);
if (instance == NULL) {
if (GetLastError() != ERROR_MOD_NOT_FOUND) goto error;
// KAA: allow loading of drivers (like winspool.drv)
- swprintf(buf, L"%s.DRV", dll_name);
+ snwprintf(buf, bufsize, L"%s.DRV", dll_name);
instance = LoadLibraryW(buf);
if (instance == NULL) {
if (GetLastError() != ERROR_MOD_NOT_FOUND) goto error;
// #1883: allow loading of unix-style libfoo.dll DLLs
- swprintf(buf, L"lib%s.DLL", dll_name);
+ snwprintf(buf, bufsize, L"lib%s.DLL", dll_name);
instance = LoadLibraryW(buf);
if (instance == NULL) {
goto error;