Skip to content

Commit

Permalink
Windows native IDN fixes.
Browse files Browse the repository at this point in the history
changed windows.h include to system header;
changed obsolete 2nd check for str_w to str_utf8 in order to catch
malloc() failure and avoid a free(NULL);
changed calls to GetLastError() to void to kill unsused var compiler
warnings;
moved one call to GetLastError() into else case so that its only
called when WideCharToMultiByte() really fails.
  • Loading branch information
gknauf committed Apr 19, 2011
1 parent 24e5a40 commit 519bec7
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions lib/idn_win32.c
Expand Up @@ -24,7 +24,13 @@
* Pierre Joye <pierre@php.net>
***************************************************************************/
#if defined(WIN32) && defined(USE_WIN32_IDN)
#include "windows.h"
#include <windows.h>
#ifdef HAVE_NORMALIZATION_H
#define __in
#define __in_ecount(x)
#define __out_ecount(x)
#include <normalization.h>
#endif
#include <stdio.h>
#include <tchar.h>
#define IDN_MAX_LENGTH 255
Expand Down Expand Up @@ -58,18 +64,20 @@ static const char *_curl_win32_wchar_to_UTF8(const wchar_t *str_w)
if (str_w) {
size_t str_utf8_len = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, NULL,
0, NULL, NULL);
DWORD err = GetLastError();
if (str_utf8_len) {
str_utf8 = (char *) malloc(str_utf8_len * sizeof(wchar_t));
if (str_w) {
if (str_utf8) {
if (WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len,
NULL, FALSE) == 0) {
DWORD err = GetLastError();
(void) GetLastError();
free((void *)str_utf8);
str_utf8 = NULL;
}
}
}
else {
(void) GetLastError();
}
}

return str_utf8;
Expand Down

0 comments on commit 519bec7

Please sign in to comment.