diff --git a/crypto/src/x509/X509Certificate.cs b/crypto/src/x509/X509Certificate.cs
index aec793731..f58477439 100644
--- a/crypto/src/x509/X509Certificate.cs
+++ b/crypto/src/x509/X509Certificate.cs
@@ -477,8 +477,7 @@ namespace Org.BouncyCastle.X509
AsymmetricKeyParameter temp = PublicKeyFactory.CreateKey(c.SubjectPublicKeyInfo);
- Interlocked.CompareExchange(ref publicKeyValue, temp, null);
- return publicKeyValue;
+ return Interlocked.CompareExchange(ref publicKeyValue, temp, null) ?? temp;
}
/// <summary>
@@ -699,8 +698,7 @@ namespace Org.BouncyCastle.X509
CachedEncoding temp = new CachedEncoding(encoding, exception);
- Interlocked.CompareExchange(ref cachedEncoding, temp, null);
- return cachedEncoding;
+ return Interlocked.CompareExchange(ref cachedEncoding, temp, null) ?? temp;
}
private static bool IsAlgIDEqual(AlgorithmIdentifier id1, AlgorithmIdentifier id2)
diff --git a/crypto/src/x509/X509Crl.cs b/crypto/src/x509/X509Crl.cs
index e47addd7a..b4af1b374 100644
--- a/crypto/src/x509/X509Crl.cs
+++ b/crypto/src/x509/X509Crl.cs
@@ -466,8 +466,7 @@ namespace Org.BouncyCastle.X509
CachedEncoding temp = new CachedEncoding(encoding, exception);
- Interlocked.CompareExchange(ref cachedEncoding, temp, null);
- return cachedEncoding;
+ return Interlocked.CompareExchange(ref cachedEncoding, temp, null) ?? temp;
}
}
}
|