 +{
 +    int bufSize;
 +    char* out = NULL;
-+    if ( wStr != NULL )
++    if( wStr != NULL )
 +    {
-+        bufSize = WideCharToMultiByte( CP_ACP,  0, wStr, -1, NULL, 0, NULL, NULL );
++        bufSize = WideCharToMultiByte(
++            CP_ACP,  0, wStr, -1, NULL, 0, NULL, NULL );
 +        out = ( char* )malloc( bufSize * sizeof(char));
 +        WideCharToMultiByte( CP_ACP, 0, wStr, -1, out, bufSize, NULL, NULL );
 +    }

 
 #ifndef CURL_DISABLE_HTTP
   /* If proxy was not specified, we check for default proxy environment
@@ -4138,7 +4158,57 @@ static char *detect_proxy(struct connectdata *conn)
    * For compatibility, the all-uppercase versions of these variables are
    * checked if the lowercase versions don't exist.
    */
-  char *no_proxy=NULL;
+#ifdef WIN32
+  WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *ieProxyConfig;
+  ieProxyConfig = (WINHTTP_CURRENT_USER_IE_PROXY_CONFIG*)malloc(sizeof(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG));
+  if(WinHttpGetIEProxyConfigForCurrentUser(ieProxyConfig)) {
+    if(!ieProxyConfig->fAutoDetect) {
+      char *ieProxy;

 #include "urldata.h"
 #include "netrc.h"
 
@@ -4111,6 +4115,22 @@ static bool check_noproxy(const char* name, const char* no_proxy)
   return FALSE;
 }
 
