Don't bother to free NULL subcontexts
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 3fddc4e..73389bb 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -172,6 +172,7 @@
 #define ECDSA_BUDGET( ops )   \
     MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, &rs_ctx->ecp, ops ) );
 
+/* Call this when entering a function that needs its own sub-context */
 #define ECDSA_RS_ENTER( SUB )   do {                                 \
     /* reset ops count for this call if top-level */                 \
     if( rs_ctx != NULL && rs_ctx->ecp.depth++ == 0 )                 \
@@ -189,9 +190,11 @@
     }                                                                \
 } while( 0 )
 
+/* Call this when leaving a function that needs its own sub-context */
 #define ECDSA_RS_LEAVE( SUB )   do {                                 \
     /* clear our sub-context when not in progress (done or error) */ \
-    if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS )       \
+    if( rs_ctx != NULL && rs_ctx->SUB != NULL &&                     \
+        ret != MBEDTLS_ERR_ECP_IN_PROGRESS )                         \
     {                                                                \
         ecdsa_restart_## SUB ##_free( rs_ctx->SUB );                 \
         mbedtls_free( rs_ctx->SUB );                                 \