From 5b79c13aef1e1df4186ac293b08ec250f1caa81f Mon Sep 17 00:00:00 2001
From: Daniel Waggoner <dwaggoner@frbatlanta.org>
Date: Fri, 18 Feb 2011 15:08:03 -0500
Subject: [PATCH] error_dw.c: bug fixes - replaced close with fclose and
 ensured functions return a value when required (cherry picked from commit
 0e178d5e8737794acc2b2ca1b101ddeee9e2c13e)

---
 error/dw_error.c | 36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/error/dw_error.c b/error/dw_error.c
index 7cf54dd..bc3874a 100644
--- a/error/dw_error.c
+++ b/error/dw_error.c
@@ -263,23 +263,26 @@ int dw_CreateErrorMessageFile(char *filename)
     dw_ConsoleErrorMessage();
   else
     {
-      if (f_err) close(f_err);
+      if (f_err) fclose(f_err);
       if (filename_err) dw_free(filename_err);
       if (f_err=fopen(filename,"wt"))
-	{
-	  if (filename_err=(char*)malloc(strlen(filename)+1))
+	if (filename_err=(char*)malloc(strlen(filename)+1))
+	  {
 	    strcpy(filename_err,filename);
-	  else
+	    return 1;
+	  }
+	else
+	  {
 	    dw_Error(MEM_ERR);
-	  return 1;
-	}
+	    dw_ConsoleErrorMessage();
+	  }
       else
 	{
 	  filename_err=(char*)NULL;
 	  dw_FileError(FILE_OPEN_ERR,filename);
-	  return 0;
 	}
     }
+  return 0;
 }
 
 /*
@@ -292,23 +295,26 @@ int dw_AppendErrorMessageFile(char *filename)
     dw_ConsoleErrorMessage();
   else
     {
-      if (f_err) close(f_err);
+      if (f_err) fclose(f_err);
       if (filename_err) dw_free(filename_err);
       if (f_err=fopen(filename,"at"))
-	{
-	  if (filename_err=(char*)malloc(strlen(filename)+1))
+	if (filename_err=(char*)malloc(strlen(filename)+1))
+	  {
 	    strcpy(filename_err,filename);
-	  else
+	    return 1;
+	  }
+	else
+	  {
 	    dw_Error(MEM_ERR);
-	  return 1;
-	}
+	    dw_ConsoleErrorMessage();
+	  }
       else
 	{
 	  filename_err=(char*)NULL;
 	  dw_FileError(FILE_OPEN_ERR,filename);
-	  return 0;
 	}
     }
+  return 0;
 }
 
 /*
@@ -316,7 +322,7 @@ int dw_AppendErrorMessageFile(char *filename)
 */
 void dw_ConsoleErrorMessage(void)
 {
-  if (f_err) close(f_err);
+  if (f_err) fclose(f_err);
   if (filename_err) dw_free(filename_err);
   f_err=(FILE*)NULL;
   filename_err=(char*)NULL;
-- 
GitLab