diff --git a/library/entropy_poll.c b/library/entropy_poll.c
index f11a0b8..8fb7f9e 100644
--- a/library/entropy_poll.c
+++ b/library/entropy_poll.c
@@ -57,12 +57,12 @@
  * These constants are guaranteed to be the same, though, so we suppress the
  * warning when including intsafe.h.
  */
-#pragma warning( push )
-#pragma warning( disable : 4005 )
+#pragma warning(push)
+#pragma warning(disable : 4005)
 #endif
 #include <intsafe.h>
 #if defined(_MSC_VER) && _MSC_VER <= 1600
-#pragma warning( pop )
+#pragma warning(pop)
 #endif
 
 int mbedtls_platform_entropy_poll(void *data, unsigned char *output, size_t len,
@@ -77,14 +77,13 @@
      * 64-bit Windows platforms. Ensure len's value can be safely converted into
      * a ULONG.
      */
-    if ( FAILED( SizeTToULong( len, &len_as_ulong ) ) )
-    {
-        return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+    if (FAILED(SizeTToULong(len, &len_as_ulong))) {
+        return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
     }
 
-    if ( !BCRYPT_SUCCESS( BCryptGenRandom( NULL, output, len_as_ulong, BCRYPT_USE_SYSTEM_PREFERRED_RNG ) ) )
-    {
-        return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+    if (!BCRYPT_SUCCESS(BCryptGenRandom(NULL, output, len_as_ulong,
+                                        BCRYPT_USE_SYSTEM_PREFERRED_RNG))) {
+        return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
     }
 
     *olen = len;
diff --git a/library/x509_crt.c b/library/x509_crt.c
index d9df4b2..d4a6dbb 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -67,12 +67,12 @@
  * These constants are guaranteed to be the same, though, so we suppress the
  * warning when including intsafe.h.
  */
-#pragma warning( push )
-#pragma warning( disable : 4005 )
+#pragma warning(push )
+#pragma warning(disable : 4005)
 #endif
 #include <intsafe.h>
 #if defined(_MSC_VER) && _MSC_VER <= 1600
-#pragma warning( pop )
+#pragma warning(pop)
 #endif
 #else
 #include <time.h>
@@ -1570,8 +1570,9 @@
     p = filename + len;
     filename[len++] = '*';
 
-    if (FAILED (SizeTToInt(len, &length_as_int)))
-        return(MBEDTLS_ERR_X509_FILE_IO_ERROR);
+    if (FAILED(SizeTToInt(len, &length_as_int))) {
+        return MBEDTLS_ERR_X509_FILE_IO_ERROR;
+    }
 
     /*
      * Note this function uses the code page CP_ACP, and assumes the incoming
@@ -1600,15 +1601,15 @@
             continue;
         }
 
-        if (FAILED(SizeTToInt(wcslen(file_data.cFileName), &length_as_int)))
-            return(MBEDTLS_ERR_X509_FILE_IO_ERROR);
+        if (FAILED(SizeTToInt(wcslen(file_data.cFileName), &length_as_int))) {
+            return MBEDTLS_ERR_X509_FILE_IO_ERROR;
+        }
 
         w_ret = WideCharToMultiByte(CP_ACP, 0, file_data.cFileName,
                                     length_as_int,
                                     p, (int) len - 1,
                                     NULL, NULL);
-        if(w_ret == 0)
-        {
+        if (w_ret == 0) {
             ret = MBEDTLS_ERR_X509_FILE_IO_ERROR;
             goto cleanup;
         }
