diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 0586a56eefa86133c32298300d6753494e1d2b27..fc3a18cf6f5534ea9cf33d4d5f2b3044dbabeb6c 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -1988,7 +1988,6 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int
 	FILE *txt;
 	int res = 0;
 	int msgnum;
-	int fd;
 	int duration = 0;
 	int ausemacro = 0;
 	int ousemacro = 0;
@@ -2192,24 +2191,22 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int
 	chan->name,
 	ast_callerid_merge(callerid, sizeof(callerid), chan->cid.cid_name, chan->cid.cid_num, "Unknown"),
 	date, (long)time(NULL),
-	category ? category : "");
-					fclose(txt);
+	category ? category : ""); 
 				} else
 					ast_log(LOG_WARNING, "Error opening text file for output\n");
 				res = play_record_review(chan, NULL, fn, vmmaxmessage, fmt, 1, vmu, &duration, dir);
-				if (res == '0')
+				if (res == '0') {
+					if (txt)
+						fclose(txt);
 					goto transfer;
+				}
 				if (res > 0)
 					res = 0;
-				fd = open(txtfile, O_APPEND | O_WRONLY);
-				if (fd > -1) {
-					txt = fdopen(fd, "a");
-					if (txt) {
-						fprintf(txt, "duration=%d\n", duration);
-						fclose(txt);
-					} else
-						close(fd);
+				if (txt) {
+					fprintf(txt, "duration=%d\n", duration);
+					fclose(txt);
 				}
+				
 				if (duration < vmminmessage) {
 					if (option_verbose > 2) 
 						ast_verbose( VERBOSE_PREFIX_3 "Recording was %d seconds long but needs to be at least %d - abandoning\n", duration, vmminmessage);