Fix up potential overflows in size calculations by replacing
[pspp] / src / error.c
index a26a8db57287ce679033992866ee8ebd1c643c03..28da450ed86bc7cb0f80e05beb5a3d78688f3de4 100644 (file)
@@ -14,8 +14,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 #include <config.h>
 #include "error.h"
@@ -25,7 +25,7 @@
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
-#include "getline.h"
+#include "getl.h"
 #include "glob.h"
 #include "lexer.h"
 #include "main.h"
 #include "var.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 int err_error_count;
 int err_warning_count;
 
@@ -122,7 +126,7 @@ err_push_file_locator (const struct file_locator *f)
       else
        mfile_loc *= 2;
 
-      file_loc = xrealloc (file_loc, mfile_loc * sizeof *file_loc);
+      file_loc = xnrealloc (file_loc, mfile_loc, sizeof *file_loc);
     }
 
   file_loc[nfile_loc++] = f;
@@ -203,10 +207,12 @@ err_hcf (int success)
   getl_uninitialize ();
 
   free(file_loc);
+  file_loc = NULL;
+  nfile_loc = mfile_loc = 0;
+  
   outp_done ();
   done_glob();
 
-
   exit (success ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
@@ -510,7 +516,9 @@ request_bug_report_and_abort(const char *msg )
          "default_config_path: %s\n"
          "include_path:        %s\n"
          "groff_font_path:     %s\n"
-         "locale_dir:          %s\n",
+         "locale_dir:          %s\n"
+         "compiler version:    %s\n"
+         ,
 
          bare_version,         
          version,
@@ -520,7 +528,13 @@ request_bug_report_and_abort(const char *msg )
          default_config_path,
          include_path, 
          groff_font_path,
-         locale_dir);     
+         locale_dir,
+#ifdef __VERSION__
+         __VERSION__
+#else
+         "Unknown"
+#endif
+         );     
 
   if ( msg )
     fprintf(stderr,"Diagnosis: %s\n",msg);