diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index cfb8717..597273b 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2470,7 +2470,6 @@
     volatile size_t *content_size_dup = content_size;
     volatile size_t remaining_dup = remaining;
 
-
     /* Write real content type */
     if( remaining == 0 )
         return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL );
@@ -4888,6 +4887,7 @@
     memset( mask + offset / 8, 0xFF, len / 8 );
 }
 
+#define BITMASK_CHECK_FAILED 0x75555555
 /*
  * Check that bitmask is full
  */
@@ -4897,11 +4897,11 @@
 
     for( i = 0; i < len / 8; i++ )
         if( mask[i] != 0xFF )
-            return( 0x75555555 );
+            return( BITMASK_CHECK_FAILED );
 
     for( i = 0; i < len % 8; i++ )
         if( ( mask[len / 8] & ( 1 << ( 7 - i ) ) ) == 0 )
-            return( 0x75555555 );
+            return( BITMASK_CHECK_FAILED );
 
         return( 0 );
 }
@@ -7129,6 +7129,7 @@
 #if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C)
 
 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
+#define PEER_CRT_CHANGED 0x75555555
 static int ssl_check_peer_crt_unchanged( mbedtls_ssl_context *ssl,
                                          unsigned char *crt_buf,
                                          size_t crt_buf_len )
@@ -7136,14 +7137,15 @@
     mbedtls_x509_crt const * const peer_crt = ssl->session->peer_cert;
 
     if( peer_crt == NULL )
-        return( 0x75555555 );
+        return( PEER_CRT_CHANGED );
 
     if( peer_crt->raw.len != crt_buf_len )
-        return( 0x75555555 );
+        return( PEER_CRT_CHANGED );
 
     return( mbedtls_platform_memcmp( peer_crt->raw.p, crt_buf, crt_buf_len ) );
 }
 #elif defined(MBEDTLS_SSL_RENEGOTIATION)
+#define PEER_CRT_CHANGED 0x75555555
 static int ssl_check_peer_crt_unchanged( mbedtls_ssl_context *ssl,
                                          unsigned char *crt_buf,
                                          size_t crt_buf_len )
@@ -7161,7 +7163,7 @@
     if( peer_cert_digest == NULL ||
         digest_info == MBEDTLS_MD_INVALID_HANDLE )
     {
-        return( 0x75555555 );
+        return( PEER_CRT_CHANGED );
     }
 
     digest_len = mbedtls_md_get_size( digest_info );
@@ -7170,7 +7172,7 @@
 
     ret = mbedtls_md( digest_info, crt_buf, crt_buf_len, tmp_digest );
     if( ret != 0 )
-        return( 0x75555555 );
+        return( PEER_CRT_CHANGED );
 
     return( mbedtls_platform_memcmp( tmp_digest, peer_cert_digest, digest_len ) );
 }
