diff --git a/tdd.c b/tdd.c
index 6ff6c0fbd0995106f89524307c253c515be3ec12..e2a6cc839ccc0db3088c31c16b57dca218e3c0b7 100755
--- a/tdd.c
+++ b/tdd.c
@@ -77,8 +77,8 @@ struct tdd_state *tdd_new(void)
 {
 	struct tdd_state *tdd;
 	tdd = malloc(sizeof(struct tdd_state));
-	memset(tdd, 0, sizeof(struct tdd_state));
 	if (tdd) {
+		memset(tdd, 0, sizeof(struct tdd_state));
 		tdd->fskd.spb = 176;		/* 45.5 baud */
 		tdd->fskd.hdlc = 0;		/* Async */
 		tdd->fskd.nbit = 5;		/* 5 bits */