diff --git a/apps/app_voicemail2.c b/apps/app_voicemail2.c
index 0db25adcaf28e331150fdd0253eed1428b1471af..6ff1a016da8844fcbc572c33193bc7d633666b4f 100755
--- a/apps/app_voicemail2.c
+++ b/apps/app_voicemail2.c
@@ -1955,7 +1955,7 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v
 	/* Can't think of how other diffs might be helpful, but I'm sure somebody will think of something. */
 #endif
 	if (the_zone)
-		res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone);
+		res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, &(the_zone->timezone));
 	else
 		res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL);
 #if 0
diff --git a/stdtime/localtime.c b/stdtime/localtime.c
index 18a1b597c388e79a47dc98086396ef79ea825a6e..276eb9f9760d5c3bb282013709a02b39a6902199 100755
--- a/stdtime/localtime.c
+++ b/stdtime/localtime.c
@@ -981,11 +981,14 @@ const char * const	zone;
 
 	sp = lclptr;
 	/* Find the right zone record */
-	while (sp != NULL) {
-		if (!strcmp(sp->name,zone))
-			break;
-		sp = sp->next;
-	}
+	if (zone == NULL)
+		sp = NULL;
+	else
+		while (sp != NULL) {
+			if (!strcmp(sp->name,zone))
+				break;
+			sp = sp->next;
+		}
 
 	if (sp == NULL) {
 		ast_tzsetwall();