Don't set pointer if add_lock_callback used.
diff --git a/CHANGES b/CHANGES
index e8ffbf7..cf79a8e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -11,6 +11,11 @@
          *) applies to 0.9.6a (/0.9.6b) and 0.9.7
          +) applies to 0.9.7 only
 
+  *) Don't change *pointer in CRYPTO_add_lock() is add_lock_callback is
+     used: it isn't thread safe and the add_lock_callback should handle
+     that itself.
+     [Paul Rose <Paul.Rose@bridge.com>]
+
   *) Verify that incoming data obeys the block size in
      ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c).
      [Bodo Moeller]
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index e9c9b3b..b733aba 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -431,7 +431,6 @@
 			CRYPTO_get_lock_name(type),
 			file,line);
 #endif
-		*pointer=ret;
 		}
 	else
 		{