diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 1eadea3e69b9fd339f21fea15766244abca27642..7e7c01790c742a237b9b297bf6e211e42d3d9c82 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -5844,13 +5844,15 @@ static void *ss_thread(void *data)
 		}
 		else
 			cs = NULL;
-		if (chan->cid.cid_num) {
+		if (number || name) {
+		    if (chan->cid.cid_num) {
 			free(chan->cid.cid_num);
 			chan->cid.cid_num = NULL;
-		}
-		if (chan->cid.cid_name) {
+		    }
+		    if (chan->cid.cid_name) {
 			free(chan->cid.cid_name);
 			chan->cid.cid_name = NULL;
+		    }
 		}
 		if (number)
 			ast_shrink_phone_number(number);