Better support for MSVC
diff --git a/ChangeLog b/ChangeLog
index 8e3b0a9..81bafe9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,6 +14,7 @@
    * Header files with 'polarssl/'
    * Const correctness
    * Possible naming collision in dhm_context
+   * Better support for MSVC
 
 = PolarSSL-1.3.0 released on 2013-10-01
 Features
diff --git a/include/polarssl/compat-1.2.h b/include/polarssl/compat-1.2.h
index b60c932..ce4566c 100644
--- a/include/polarssl/compat-1.2.h
+++ b/include/polarssl/compat-1.2.h
@@ -32,6 +32,11 @@
 // Comment out to disable prototype change warnings
 #define SHOW_PROTOTYPE_CHANGE_WARNINGS
 
+#if defined _MSC_VER
+// MSVC does not support #warning
+#undef SHOW_PROTOTYPE_CHANGE_WARNINGS
+#endif
+
 #if defined(SHOW_PROTOTYPE_CHANGE_WARNINGS)
 #warning "You can disable these warnings by commenting SHOW_PROTOTYPE_CHANGE_WARNINGS in compat-1.2.h"
 #endif
@@ -53,14 +58,14 @@
     sha256_update( ctx, input, ilen );
 }
 inline void sha2_finish( sha256_context *ctx, unsigned char output[32] ) {
-    return sha256_finish( ctx, output );
+    sha256_finish( ctx, output );
 }
 inline int sha2_file( const char *path, unsigned char output[32], int is224 ) {
     return sha256_file( path, output, is224 );
 }
 inline void sha2( const unsigned char *input, size_t ilen,
                   unsigned char output[32], int is224 ) {
-    return sha256( input, ilen, output, is224 );
+    sha256( input, ilen, output, is224 );
 }
 inline void sha2_hmac_starts( sha256_context *ctx, const unsigned char *key,
                               size_t keylen, int is224 ) {
@@ -102,14 +107,14 @@
     sha512_update( ctx, input, ilen );
 }
 inline void sha4_finish( sha512_context *ctx, unsigned char output[64] ) {
-    return sha512_finish( ctx, output );
+    sha512_finish( ctx, output );
 }
 inline int sha4_file( const char *path, unsigned char output[64], int is384 ) {
     return sha512_file( path, output, is384 );
 }
 inline void sha4( const unsigned char *input, size_t ilen,
                   unsigned char output[32], int is384 ) {
-    return sha512( input, ilen, output, is384 );
+    sha512( input, ilen, output, is384 );
 }
 inline void sha4_hmac_starts( sha512_context *ctx, const unsigned char *key,
                               size_t keylen, int is384 ) {
@@ -232,7 +237,7 @@
     return x509_crt_revoked( crt, crl );
 }
 inline void x509_free( x509_cert *crt ) {
-    return x509_crt_free( crt );
+    x509_crt_free( crt );
 }
 #endif /* POLARSSL_X509_CRT_PARSE_C */
 
@@ -354,7 +359,7 @@
     int ret;
     pk_context ctx;
     if( ( ret = pk_init_ctx( &ctx, pk_info_from_type( POLARSSL_PK_RSA ) ) ) != 0 ) return( ret );
-    if( ( ret = rsa_copy( ctx.pk_ctx, rsa ) ) != 0 ) return( ret );
+    if( ( ret = rsa_copy( pk_rsa( ctx ), rsa ) ) != 0 ) return( ret );
     ret = pk_write_pubkey_der( &ctx, buf, len );
     pk_free( &ctx );
     return( ret );
@@ -363,7 +368,7 @@
     int ret;
     pk_context ctx;
     if( ( ret = pk_init_ctx( &ctx, pk_info_from_type( POLARSSL_PK_RSA ) ) ) != 0 ) return( ret );
-    if( ( ret = rsa_copy( ctx.pk_ctx, rsa ) ) != 0 ) return( ret );
+    if( ( ret = rsa_copy( pk_rsa( ctx ), rsa ) ) != 0 ) return( ret );
     ret = pk_write_key_der( &ctx, buf, len );
     pk_free( &ctx );
     return( ret );
diff --git a/library/x509_crt.c b/library/x509_crt.c
index e6c840c..91d4626 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -958,7 +958,7 @@
 	w_ret = MultiByteToWideChar( CP_ACP, 0, path, len, szDir, MAX_PATH - 3 );
 
     hFind = FindFirstFileW( szDir, &file_data );
-    if (hFind == INVALID_HANDLE_VALUE) 
+    if (hFind == INVALID_HANDLE_VALUE)
         return( POLARSSL_ERR_X509_FILE_IO_ERROR );
 
     len = MAX_PATH - len;
@@ -982,10 +982,9 @@
     }
     while( FindNextFileW( hFind, &file_data ) != 0 );
 
-    if (GetLastError() != ERROR_NO_MORE_FILES) 
+    if (GetLastError() != ERROR_NO_MORE_FILES)
         ret = POLARSSL_ERR_X509_FILE_IO_ERROR;
 
-cleanup:
     FindClose( hFind );
 #else
     int t_ret, i;