New function CRYPTO_num_locks.
diff --git a/CHANGES b/CHANGES
index 8e71a6a..b8d1876 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,11 @@
 
  Changes between 0.9.3a and 0.9.4
 
+  *) New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS.
+     Whoever hopes to achieve shared-library compatibility across versions
+     must use this, not the compile-time macro.
+     [Bodo Moeller]
+
   *) Add missing case to s3_clnt.c state machine -- one of the new SSL tests
      through a BIO pair triggered the default case, i.e.
      SSLerr(...,SSL_R_UNKNOWN_STATE).
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index 7808765..d70a570 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -133,6 +133,11 @@
 	return(i);
 	}
 
+int CRYPTO_num_locks(void)
+	{
+	return CRYPTO_NUM_LOCKS;
+	}
+
 void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file,
 		int line)
 	{
diff --git a/crypto/crypto.h b/crypto/crypto.h
index 8297b7d..1b927e1 100644
--- a/crypto/crypto.h
+++ b/crypto/crypto.h
@@ -256,6 +256,8 @@
 
 int CRYPTO_mem_ctrl(int mode);
 int CRYPTO_get_new_lockid(char *name);
+
+int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */
 void CRYPTO_lock(int mode, int type,const char *file,int line);
 void CRYPTO_set_locking_callback(void (*func)(int mode,int type,
 					      const char *file,int line));