diff --git a/library/ecp.c b/library/ecp.c
index 365372a..6675c47 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -138,7 +138,11 @@
  */
 static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) );
+    mbedtls_ecp_point_init( &ctx->R );
+    ctx->i = 0;
+    ctx->T = NULL;
+    ctx->T_size = 0;
+    ctx->state = ecp_rsm_init;
 }
 
 /*
@@ -160,7 +164,7 @@
         mbedtls_free( ctx->T );
     }
 
-    memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) );
+    ecp_restart_mul_init( ctx );
 }
 
 /*
@@ -183,7 +187,9 @@
  */
 static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
+    mbedtls_ecp_point_init( &ctx->mP );
+    mbedtls_ecp_point_init( &ctx->R );
+    ctx->state = ecp_rsma_mul1;
 }
 
 /*
@@ -197,7 +203,7 @@
     mbedtls_ecp_point_free( &ctx->mP );
     mbedtls_ecp_point_free( &ctx->R );
 
-    memset( ctx, 0, sizeof( *ctx ) );
+    ecp_restart_muladd_init( ctx );
 }
 
 /*
@@ -205,7 +211,10 @@
  */
 void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
+    ctx->ops_done = 0;
+    ctx->depth = 0;
+    ctx->rsm = NULL;
+    ctx->ma = NULL;
 }
 
 /*
@@ -216,16 +225,13 @@
     if( ctx == NULL )
         return;
 
-    ctx->ops_done = 0;
-    ctx->depth = 0;
-
     ecp_restart_mul_free( ctx->rsm );
     mbedtls_free( ctx->rsm );
-    ctx->rsm = NULL;
 
     ecp_restart_muladd_free( ctx->ma );
     mbedtls_free( ctx->ma );
-    ctx->ma = NULL;
+
+    mbedtls_ecp_restart_init( ctx );
 }
 
 /*
@@ -463,7 +469,21 @@
     if( grp == NULL )
         return;
 
-    memset( grp, 0, sizeof( mbedtls_ecp_group ) );
+    grp->id = 0;
+    mbedtls_mpi_init( &grp->P );
+    mbedtls_mpi_init( &grp->A );
+    mbedtls_mpi_init( &grp->B );
+    mbedtls_ecp_point_init( &grp->G );
+    mbedtls_mpi_init( &grp->N );
+    grp->pbits = 0;
+    grp->nbits = 0;
+    grp->h = 0;
+    grp->modp = NULL;
+    grp->t_pre = NULL;
+    grp->t_post = NULL;
+    grp->t_data = NULL;
+    grp->T = NULL;
+    grp->T_size = 0;
 }
 
 /*
@@ -986,6 +1006,9 @@
     if( ( c = mbedtls_calloc( T_size, sizeof( mbedtls_mpi ) ) ) == NULL )
         return( MBEDTLS_ERR_ECP_ALLOC_FAILED );
 
+    for( i = 0; i < T_size; i++ )
+        mbedtls_mpi_init( &c[i] );
+
     mbedtls_mpi_init( &u ); mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi );
 
     /*
@@ -1906,6 +1929,9 @@
             ret = MBEDTLS_ERR_ECP_ALLOC_FAILED;
             goto cleanup;
         }
+
+        for( i = 0; i < T_size; i++ )
+            mbedtls_ecp_point_init( &T[i] );
     }
 
     /* Compute table (or finish computing it) if not done already */
