Windows native IDN fixes.
authorGuenter Knauf <lists@gknw.net>
Tue, 19 Apr 2011 15:13:09 +0000 (17:13 +0200)
committerGuenter Knauf <lists@gknw.net>
Tue, 19 Apr 2011 15:13:09 +0000 (17:13 +0200)
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.

lib/idn_win32.c

index 41fdd5d..f2df516 100644 (file)
  * 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
@@ -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;