Apply patch #5225, assertions.
authorBen Pfaff <blp@gnu.org>
Sat, 8 Jul 2006 03:05:51 +0000 (03:05 +0000)
committerBen Pfaff <blp@gnu.org>
Sat, 8 Jul 2006 03:05:51 +0000 (03:05 +0000)
56 files changed:
src/data/any-reader.c
src/data/any-writer.c
src/data/category.c
src/data/category.h
src/data/data-out.c
src/data/file-handle-def.c
src/data/format.c
src/data/missing-values.c
src/data/sys-file-reader.c
src/data/variable.c
src/language/command.c
src/language/data-io/data-list.c
src/language/data-io/data-reader.c
src/language/data-io/file-handle.q
src/language/data-io/get.c
src/language/data-io/inpt-pgm.c
src/language/data-io/list.q
src/language/data-io/matrix-data.c
src/language/data-io/print.c
src/language/dictionary/modify-variables.c
src/language/dictionary/numeric.c
src/language/dictionary/vector.c
src/language/expressions/evaluate.c
src/language/expressions/evaluate.inc.pl
src/language/expressions/optimize.c
src/language/expressions/optimize.inc.pl
src/language/expressions/parse.c
src/language/lexer/lexer.c
src/language/lexer/q2c.c
src/language/line-buffer.c
src/language/stats/aggregate.c
src/language/stats/crosstabs.q
src/language/stats/flip.c
src/language/stats/frequencies.q
src/language/stats/t-test.q
src/language/utilities/set.q
src/language/xforms/recode.c
src/libpspp/ChangeLog
src/libpspp/array.c
src/libpspp/assertion.h [new file with mode: 0644]
src/libpspp/automake.mk
src/libpspp/message.c
src/libpspp/message.h
src/libpspp/pool.c
src/math/design-matrix.c
src/math/sort.c
src/output/afm.c
src/output/ascii.c
src/output/charts/plot-chart.c
src/output/html.c
src/output/manager.c
src/output/postscript.c
src/output/table.c
src/ui/terminal/ChangeLog
src/ui/terminal/command-line.c
src/ui/terminal/main.c

index 0ab6dc23fd4786e091d295b5e7c66331d3e4d53a..691bc475dc996a095f495a1a38abbbc79a01d0cb 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include "file-handle-def.h"
 #include "file-name.h"
@@ -139,7 +140,7 @@ any_reader_open (struct file_handle *handle, struct dictionary **dict)
       return make_any_reader (SCRATCH_FILE,
                               scratch_reader_open (handle, dict));
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Reads a single case from READER into C.
@@ -158,7 +159,7 @@ any_reader_read (struct any_reader *reader, struct ccase *c)
     case SCRATCH_FILE:
       return scratch_reader_read_case (reader->private, c);
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if an I/O error has occurred on READER, false
@@ -177,7 +178,7 @@ any_reader_error (struct any_reader *reader)
     case SCRATCH_FILE:
       return scratch_reader_error (reader->private);
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Closes READER. */
@@ -202,7 +203,7 @@ any_reader_close (struct any_reader *reader)
       break;
 
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   free (reader);
index 5c3c0aee0f9f22fa91ef2593ae9dc7bf44f1fb34..7043b65e55e7305ae2c7b27b35de7dd048224167 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include "file-handle-def.h"
 #include "file-name.h"
@@ -85,7 +86,7 @@ any_writer_open (struct file_handle *handle, struct dictionary *dict)
                                                                   dict));
     }
 
-  abort ();
+  NOT_REACHED ();
 }
 
 /* If PRIVATE is non-null, creates and returns a new any_writer,
@@ -162,7 +163,7 @@ any_writer_write (struct any_writer *writer, const struct ccase *c)
     case SCRATCH_FILE:
       return scratch_writer_write_case (writer->private, c);
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if an I/O error has occurred on WRITER, false
@@ -181,7 +182,7 @@ any_writer_error (const struct any_writer *writer)
     case SCRATCH_FILE:
       return scratch_writer_error (writer->private);
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Closes WRITER.
@@ -209,7 +210,7 @@ any_writer_close (struct any_writer *writer)
       break;
       
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   free (writer);
index 509085497ab01fb39f6a6d0f5b4bce7f102a8984..cfde533116d9337665548163b81320e04edade0f 100644 (file)
   'cat_var'.
 */
 #include <config.h>
+
+#include "category.h"
+
+#include <assert.h>
 #include <stdlib.h>
+#include <string.h>
+
 #include <libpspp/alloc.h>
 #include <libpspp/message.h>
-#include "category.h"
 #include "cat-routines.h"
-#include <string.h>
 #include "variable.h"
 
 #define N_INITIAL_CATEGORIES 1
index 30ca272293d310f89f75e7c8abda9a00c0ce5eca..35df104beba289c7040226a88ae8286ae9701d6d 100644 (file)
@@ -37,7 +37,7 @@
 #define CAT_H
 #define CAT_VALUE_NOT_FOUND -2
 #include <stdbool.h>
-
+#include <stddef.h>
 
 union value;
 struct variable ; 
index 53d9850db88a0da0ffb9ac3c1a76ada0d097955b..0585dc2bb24e98d4f68eeccc15c83cbc650e5fca 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include <time.h>
 #include "calendar.h"
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include "format.h"
 #include <libpspp/magic.h>
@@ -101,12 +102,10 @@ data_out (char *s, const struct fmt_spec *fp, const union value *v)
           break;
 
         case FMT_A:
-          assert (0);
-          abort ();
+          NOT_REACHED ();
 
         case FMT_AHEX:
-          assert (0);
-          abort ();
+          NOT_REACHED ();
 
         case FMT_IB:
           ok = convert_IB (s, fp, number);
@@ -159,8 +158,7 @@ data_out (char *s, const struct fmt_spec *fp, const union value *v)
           break;
 
         default:
-          assert (0);
-          abort ();
+          NOT_REACHED ();
         }
     }
   else 
@@ -179,8 +177,7 @@ data_out (char *s, const struct fmt_spec *fp, const union value *v)
           break;
 
         default:
-          assert (0);
-          abort ();
+          NOT_REACHED ();
         }
     }
 
@@ -751,7 +748,7 @@ convert_date (char *dst, const struct fmt_spec *fp, double number)
       }
       break;
     default:
-      assert (0);
+      NOT_REACHED ();
     }
 
   if (buf[0] == 0)
index 4b83c3e1c2802645447f349adeebcc02eacf1752..32ca5c948782e11564e5ae604a391c1bfbba9984 100644 (file)
    02110-1301, USA. */
 
 #include <config.h>
+
 #include "file-handle-def.h"
-#include <libpspp/message.h>
+
+#include <assert.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
+
 #include <libpspp/alloc.h>
 #include <libpspp/compiler.h>
-#include "file-name.h"
-#include <libpspp/message.h>
 #include <libpspp/magic.h>
+#include <libpspp/message.h>
+#include "file-name.h"
 #include "variable.h"
 #include "scratch-handle.h"
 
index a552f867cf338ce941a3759d5610be685c2ae676..f4a61d34bc1efd0f18bcb89170740a44170892a9 100644 (file)
@@ -20,6 +20,7 @@
 #include <config.h>
 #include "format.h"
 #include <ctype.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <stdlib.h>
 #include <libpspp/compiler.h>
@@ -280,7 +281,7 @@ convert_fmt_ItoO (const struct fmt_spec *input, struct fmt_spec *output)
     case FMT_CCC:
     case FMT_CCD:
     case FMT_CCE:
-      assert (0);
+      NOT_REACHED ();
     case FMT_Z:
     case FMT_A:
       /* nothing is necessary */
@@ -314,7 +315,7 @@ convert_fmt_ItoO (const struct fmt_spec *input, struct fmt_spec *output)
       /* nothing is necessary */
       break;
     default:
-      assert (0);
+      NOT_REACHED ();
     }
 
   assert (check_output_specifier (output, 0));
index fabf98b70dc4f3c74df7e5457f376b61ca8740ea..d3b872e049f3d9fa9be29eb351d4d5810f290008 100644 (file)
@@ -21,6 +21,7 @@
 #include "missing-values.h"
 #include <assert.h>
 #include <stdlib.h>
+#include <libpspp/assertion.h>
 #include <libpspp/str.h>
 
 
@@ -90,7 +91,7 @@ mv_add_value (struct missing_values *mv, const union value *v)
     case MV_RANGE_1:
       return false;
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Attempts to add S to the set of string missing values MV.  S
@@ -139,7 +140,7 @@ mv_add_num_range (struct missing_values *mv, double low, double high)
     case MV_RANGE_1:
       return false;
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if MV contains an individual value,
@@ -159,7 +160,7 @@ mv_has_value (const struct missing_values *mv)
     case MV_RANGE:
       return false;
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Removes one individual value from MV and stores it in *V.
@@ -224,7 +225,7 @@ mv_has_range (const struct missing_values *mv)
     case MV_3:
       return false;
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Removes the numeric range from MV and stores it in *LOW and
@@ -275,7 +276,7 @@ using_element (unsigned type, int idx)
     case MV_RANGE_1:
       return true;
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if S contains only spaces between indexes
@@ -398,7 +399,7 @@ mv_is_num_user_missing (const struct missing_values *mv, double d)
     case MV_RANGE_1:
       return v[0].f == d || (v[1].f <= d && d <= v[2].f);
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if S[] is a missing value in MV, false otherwise.
@@ -425,9 +426,9 @@ mv_is_str_user_missing (const struct missing_values *mv,
               || !memcmp (v[2].s, s, mv->width));
     case MV_RANGE:
     case MV_RANGE_1:
-      abort ();
+      NOT_REACHED ();
     }
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Returns true if MV is a set of numeric missing values and V is
index 52a14a45d2e26021d05f9ba32bb20cda5b2f7445..072fca3b0964be65209abcd44cf6acc89cc8d809 100644 (file)
@@ -26,6 +26,7 @@
 #include <minmax.h>
 
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/compiler.h>
 #include <libpspp/magic.h>
@@ -1619,7 +1620,7 @@ read_compressed_data (struct sfm_reader *r, flt64 *buf)
       p = r->x;
     }
 
-  abort ();
+  NOT_REACHED ();
 
  success:
   /* We have filled up an entire record.  Update state and return
index 64e4b3f0cd9cbeb46e1315a6ee122de4834b9b51..435980e3f56fb7b49ca525b1d92621d984935305 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <config.h>
 #include "variable.h"
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <stdlib.h>
 #include <libpspp/alloc.h>
@@ -346,8 +347,7 @@ dict_class_to_name (enum dict_class dict_class)
     case DC_SCRATCH:
       return _("scratch");
     default:
-      assert (0);
-      abort ();
+      NOT_REACHED ();
     }
 }
 
index 61d54f9c4d3403f54f2cf32151b663f2ee273025..a465aa0dad7c7f4692ec465782990f3592e9c7e3 100644 (file)
@@ -34,6 +34,7 @@
 #include <language/lexer/lexer.h>
 #include <language/line-buffer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -421,7 +422,7 @@ find_command (const char *name)
   for (cmd = commands; cmd < commands + command_cnt; cmd++) 
     if (!strcmp (cmd->name, name))
       return cmd;
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Frees the WORD_CNT words in WORDS. */
@@ -595,7 +596,7 @@ report_state_mismatch (const struct command *command, enum cmd_state state)
       else if (allowed_cnt == 3)
         s = xasprintf (_("%s, %s, or %s"), allowed[0], allowed[1], allowed[2]);
       else
-        abort ();
+        NOT_REACHED ();
 
       msg (SE, _("%s is allowed only %s."), command->name, s);
 
index 6998cc9239307b52b290ab1b7005f1cee5cb4bc5..95b8036819e27dd152cb9df16f7cbb1fa6387103 100644 (file)
@@ -41,6 +41,7 @@
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -999,7 +1000,7 @@ read_from_data_list (const struct data_list_pgm *dls, struct ccase *c)
       retval = read_from_data_list_list (dls, c);
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
   dfm_pop (dls->reader);
 
index c2da55046219aebedf77e90e78da2faa5a45794f..1899acfb8396b6aa7d180fa229fc4ae968f525f6 100644 (file)
@@ -34,6 +34,7 @@
 #include <language/lexer/lexer.h>
 #include <language/line-buffer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/str.h>
 
@@ -224,7 +225,7 @@ read_file_record (struct dfm_reader *r)
         }
     }
   else
-    abort ();
+    NOT_REACHED ();
 
   r->where.line_number++;
 
index b3110ac854d271437bf2ae4179958671da1f5ab7..81094a95d2e68d3d6959be3e8de51405700b4c1b 100644 (file)
@@ -27,6 +27,7 @@
 #include <language/command.h>
 #include <language/lexer/lexer.h>
 #include <language/line-buffer.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/magic.h>
 #include <libpspp/str.h>
@@ -109,7 +110,7 @@ cmd_file_handle (void)
         properties.record_width = cmd.n_lrecl[0];
       break;
     default:
-      assert (0);
+      NOT_REACHED ();
     }
 
   if (cmd.mode != FH_SCRATCH)
@@ -154,7 +155,7 @@ referent_name (enum fh_referent referent)
     case FH_REF_SCRATCH:
       return _("scratch file");
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
index 0f0824772c216eee796fa5b173155f3578c41efb..fc4d2c12911ef39123613286143b59f8c657581b 100644 (file)
@@ -41,6 +41,7 @@
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/hash.h>
 #include <libpspp/message.h>
@@ -843,7 +844,7 @@ cmd_match_files (void)
           saw_table = true;
         }
       else
-        assert (0);
+        NOT_REACHED ();
       lex_match ('=');
 
       file->by = NULL;
@@ -1169,7 +1170,7 @@ mtf_processing_finish (void *mtf_)
     if (iter->handle == NULL)
       {
         if (!mtf_delete_file_in_place (mtf, &iter))
-          abort ();
+          NOT_REACHED ();
         break;
       }
   
index 94fa4044b291cb1c86997319c413665222d2bf7d..d4e0839286adcd8d05d8af91eae4d129bc03b060 100644 (file)
@@ -37,6 +37,7 @@
 #include <language/expressions/public.h>
 #include <language/lexer/lexer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -205,7 +206,7 @@ init_case (const struct input_program_pgm *inp, struct ccase *c)
         memset (case_data_rw (c, i)->s, ' ', sizeof case_data_rw (c, i)->s);
         break;
       default:
-        assert (0);
+        NOT_REACHED ();
       }
 }
 
@@ -229,7 +230,7 @@ clear_case (const struct input_program_pgm *inp, struct ccase *c)
         memset (case_data_rw (c, i)->s, ' ', sizeof case_data_rw (c, i)->s);
         break;
       default:
-        assert (0);
+        NOT_REACHED ();
       }
 }
 
index 19c1bb452efad2af92f77313f9375c29dba6abcb..51623aac93d5abdf91664a7fe16c3164fc98f829 100644 (file)
@@ -269,7 +269,7 @@ write_all_headers (const struct ccase *c, void *aux UNUSED)
          fputs ("  </TR>\n", x->file);
        }
       else
-       assert (0);
+       NOT_REACHED ();
     }
 }
 
@@ -387,7 +387,7 @@ clean_up (void)
          }
       }
     else
-      assert (0);
+      NOT_REACHED ();
   
   free (cmd.v_variables);
 }
@@ -718,7 +718,7 @@ list_cases (const struct ccase *c, void *aux UNUSED)
        fputs ("  </TR>\n", x->file);
       }
     else
-      assert (0);
+      NOT_REACHED ();
 
   return true;
 }
index 5a66491176b20e5540431d207816643afefcbc72..5526db91cf01e71a58b1cfec35bdd8ca52bfbe32 100644 (file)
@@ -36,6 +36,7 @@
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
 #include <libpspp/array.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -754,7 +755,7 @@ mdump_token (const struct matrix_token *token)
       printf (" '%.*s'", token->length, token->string);
       break;
     default:
-      assert (0);
+      NOT_REACHED ();
     }
   fflush (stdout);
 }
@@ -1066,16 +1067,14 @@ nr_read_data_lines (struct nr_aux_data *nr,
              n_cols = mx->n_continuous;
              break;
            default:
-             assert (0);
-              abort ();
+              NOT_REACHED ();
            }
          break;
        case 2:
          n_cols = 1;
          break;
        default:
-         assert (0);
-          abort ();
+          NOT_REACHED ();
        }
 
       {
@@ -1935,13 +1934,11 @@ wr_read_indeps (struct wr_aux_data *wr)
          n_cols = mx->n_continuous;
          break;
        default:
-         assert (0);
-          abort ();
+          NOT_REACHED ();
        }
       break;
     default:
-      assert (0);
-      abort ();
+      NOT_REACHED ();
     }
   c->n_rows[wr->content]++;
 
index 061aafc628f89fb56dadb55b3d4138badf316063..3c8db1cb0a1b4bd334211ee12b72c5e02d5b7338 100644 (file)
@@ -34,6 +34,7 @@
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -838,7 +839,7 @@ dump_table (const struct file_handle *fh)
       case PRT_SPACE:
        break;
       case PRT_ERROR:
-       assert (0);
+        NOT_REACHED ();
       }
 
   if (fh != NULL)
@@ -883,8 +884,7 @@ alloc_line (void)
          break;
        case PRT_ERROR:
         default:
-         assert (0);
-          abort ();
+          NOT_REACHED ();
        }
       if (pot_w > w)
        w = pot_w;
@@ -958,8 +958,7 @@ print_trns_proc (void *trns_, struct ccase *c, int case_num UNUSED)
        break;
 
       case PRT_ERROR:
-       assert (0);
-       break;
+        NOT_REACHED ();
       }
 
   if (t->writer != NULL && dfm_write_error (t->writer))
@@ -988,8 +987,7 @@ print_trns_free (void *prt_)
          /* nothing to do */
          break;
        case PRT_ERROR:
-         assert (0);
-         break;
+         NOT_REACHED ();
        }
       n = i->next;
       free (i);
index c17bb5629a3eeea4afd164b9ec0718ab45a7c0ad..1632f6ea0db7aecda785b929f72fd544af469b30 100644 (file)
@@ -28,6 +28,7 @@
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/array.h>
 #include <libpspp/bit-vector.h>
 #include <libpspp/compiler.h>
@@ -259,7 +260,7 @@ cmd_modify_vars (void)
                               compare_variables_given_ordering,
                               &forward_positional_ordering)
               != drop_cnt)
-            assert (0);
+            NOT_REACHED ();
 
           free (keep_vars);
           free (all_vars);
@@ -420,7 +421,7 @@ validate_var_modification (const struct dictionary *d,
                       keep_vars,
                       compare_variables_given_ordering,
                       &forward_positional_ordering) != keep_cnt)
-    assert (0);
+    NOT_REACHED ();
 
   /* Copy variables into var_renaming array. */
   var_renaming = xnmalloc (keep_cnt, sizeof *var_renaming);
@@ -514,7 +515,7 @@ rearrange_dict (struct dictionary *d, const struct var_modification *vm)
   /* Do renaming. */
   if (dict_rename_vars (d, rename_vars, rename_new_names, rename_cnt,
                         NULL) == 0)
-    assert (0);
+    NOT_REACHED ();
 
   /* Clean up. */
   for (i = 0; i < vm->rename_cnt; i++)
index a914b06ac2502012ade383d2c5b5b84fb844f44a..82b58c0240f633a33cfa4da34e1109641606ebbc 100644 (file)
@@ -27,7 +27,7 @@
 #include <language/command.h>
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
-#include <libpspp/message.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/str.h>
 
@@ -151,8 +151,7 @@ cmd_string (void)
          width = f.w / 2;
          break;
        default:
-         assert (0);
-          abort ();
+          NOT_REACHED ();
        }
 
       /* Create each variable. */
index b4a212d26641dc6d87452735469a5af337e3e165..17cbb1a64d5ae0984c3566dab13316fc46f933e2 100644 (file)
@@ -28,6 +28,7 @@
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/misc.h>
 #include <libpspp/str.h>
@@ -177,7 +178,7 @@ cmd_vector (void)
                  v[i] = dict_create_var_assert (default_dict, name, 0);
                }
               if (!dict_create_vector (default_dict, cp, v, nv))
-                assert (0);
+                NOT_REACHED ();
              cp += strlen (cp) + 1;
            }
           free (v);
index 9398b41cd239b285061cffca4522e87f806d15ca..ac36d18110d558f69e41b1985f65b0f4c8837184 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <ctype.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include "helpers.h"
 #include "evaluate.h"
@@ -67,7 +68,7 @@ expr_evaluate (struct expression *e, const struct ccase *c, int case_idx,
 #include "evaluate.inc"
           
        default:
-         abort ();
+         NOT_REACHED ();
        }
     }
 }
@@ -233,7 +234,7 @@ cmd_debug_evaluate (void)
         }
 
       default:
-        assert (0);
+        NOT_REACHED ();
       }
 
   expr_free (expr);
@@ -299,7 +300,7 @@ expr_debug_print_postfix (const struct expression *e)
           fprintf (stderr, "i<%d>", op->integer);
           break;
         default:
-          abort ();
+          NOT_REACHED ();
         } 
     }
   fprintf (stderr, "\n");
index 85112f96903e82f18b13c8b3a8728132e5a86d0c..7b6b1a3e683bae87511bcc36cef811d95aeba5a3 100644 (file)
@@ -6,7 +6,7 @@ sub generate_output {
 
        if ($op->{UNIMPLEMENTED}) {
            print "case $opname:\n";
-           print "  abort ();\n\n";
+           print "  NOT_REACHED ();\n\n";
            next;
        }
 
index c5ba6224dfd0f07c00db74c0bf8e00415fa9d15f..154517927dee47bdecaa68fe93d4af926dd0227f 100644 (file)
@@ -24,6 +24,7 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <data/calendar.h>
 #include <data/data-in.h>
 #include <libpspp/message.h>
@@ -157,12 +158,10 @@ evaluate_tree (struct composite_node *node, struct expression *e)
 #include "optimize.inc"
 
     default:
-      assert (0);
+      NOT_REACHED ();
     }
 
-  /* Not reached. */
-  assert (0);
-  abort ();
+  NOT_REACHED ();
 }
 
 static double
@@ -302,7 +301,7 @@ flatten_atom (union any_node *n, struct expression *e)
       break;
 
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
@@ -363,7 +362,7 @@ flatten_node (union any_node *n, struct expression *e)
   else if (is_composite (n->type))
     flatten_composite (n, e);
   else 
-    abort ();
+    NOT_REACHED ();
 }
 
 static union operation_data *
index 798c5001fdc5530661ed7cc2fa8cc4ff3ed7b1c4..fce530f74de5b958e9d607e1e9a60e2137e76574 100644 (file)
@@ -6,7 +6,7 @@ sub generate_output {
 
        if (!$op->{OPTIMIZABLE} || $op->{UNIMPLEMENTED}) {
            print "case $opname:\n";
-           print "  abort ();\n\n";
+           print "  NOT_REACHED ();\n\n";
            next;
        }
 
index 72604ed95236b0101341e020c18114b7cb2bbe93..bb567d2c945d42dc276cf904d67d11fac9de74e3 100644 (file)
@@ -31,6 +31,7 @@
 #include "helpers.h"
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
+#include <libpspp/assertion.h>
 #include <libpspp/misc.h>
 #include <libpspp/pool.h>
 #include <data/settings.h>
@@ -167,7 +168,7 @@ atom_type_stack (atom_type type)
       return &not_on_stack;
           
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
@@ -271,7 +272,7 @@ type_check (struct expression *e,
       break;
 
     default:
-      abort ();
+      NOT_REACHED ();
     }
   
   return true;
@@ -345,7 +346,7 @@ type_coercion_core (struct expression *e,
       break;
 
     case OP_format:
-      abort ();
+      NOT_REACHED ();
 
     case OP_ni_format:
       if ((*node)->type == OP_format
@@ -399,7 +400,7 @@ type_coercion_core (struct expression *e,
       break;
 
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   if (do_coercion) 
@@ -1282,7 +1283,7 @@ expr_node_returns (const union any_node *n)
   else if (is_composite (n->type))
     return operations[n->type].returns;
   else
-    abort ();
+    NOT_REACHED ();
 }
 
 static const char *
index c9e71b9f64670edebebbad9e50b86dd6c5b85d1f..7358c71b1be93aef13f82cc92a6a15a02f0ea184 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <language/command.h>
 #include <libpspp/message.h>
 #include <language/line-buffer.h>
@@ -934,7 +935,7 @@ lex_token_representation (void)
        }
     }
        
-  assert (0);
+  NOT_REACHED ();
 }
 \f
 /* Really weird functions. */
@@ -1018,7 +1019,7 @@ convert_numeric_string_to_char_string (enum string_type type)
       chars_per_byte = 2;
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
   
   byte_cnt = ds_length (&tokstr) / chars_per_byte;
index df6f5d9f3998443474fd0ef403da90c56ec6d2db..a6de4ac62bbf95bf00bf69bc8316216eda1aed5b 100644 (file)
@@ -27,6 +27,7 @@
 #include <time.h>
 #include <errno.h>
 #include <unistd.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/str.h>
 #include "exit.h"
@@ -1321,7 +1322,7 @@ dump_vars_init (int persistent)
                break;
 
              default:
-               assert (0);
+               NOT_REACHED ();
              }
          }
       }
@@ -1709,7 +1710,7 @@ dump_subcommand (const subcommand *sbc)
       dump (0, "goto lossage;");
       dump (-1, "default:");
       indent ();
-      dump (0, "assert (0);");
+      dump (0, "NOT_REACHED ();");
       dump (-1, "}");
       outdent ();
     }
@@ -1775,7 +1776,7 @@ dump_parser (int persistent)
       dump (0, "break;");
       dump (-1, "default:");
       indent ();
-      dump (0, "assert (0);");
+      dump (0, "NOT_REACHED ();");
       dump (-1, "}");
       outdent ();
     }
@@ -2030,6 +2031,7 @@ main (int argc, char *argv[])
 
          dump (0, "#include <stdlib.h>");
          dump (0, "#include <libpspp/alloc.h>");
+         dump (0, "#include <libpspp/assertion.h>");
          dump (0, "#include <libpspp/message.h>");
          dump (0, "#include <language/lexer/lexer.h>");
          dump (0, "#include <language/lexer/variable-parser.h>");
index f0e69720ed803134c58f9c7530cafdd4fa3c0ac0..146ca00a92847e93d5179a85a8180fa53f1946c2 100644 (file)
@@ -31,6 +31,7 @@
 #include <language/command.h>
 #include <language/lexer/lexer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
 #include <libpspp/str.h>
@@ -493,7 +494,7 @@ read_line_from_source (struct string *line, struct getl_source *s)
       return s->u.interactive (line, get_prompt_style ());
     }
 
-  abort ();
+  NOT_REACHED ();
 }
 
 /* Reads a single line into LINE.
index 78c29c4fa74c125d19611b352733d683d95b4ed6..7c8245e00345bb6e42b1198cb4029808e08511ac 100644 (file)
@@ -38,7 +38,7 @@
 #include <language/lexer/variable-parser.h>
 #include <language/stats/sort-criteria.h>
 #include <libpspp/alloc.h>
-#include <libpspp/message.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/misc.h>
 #include <libpspp/pool.h>
@@ -892,7 +892,7 @@ accumulate_aggregate_info (struct agr_proc *agr,
                caught earlier.  Nothing to do. */
             break;
          default:
-           assert (0);
+           NOT_REACHED ();
          }
     } else {
       switch (iter->function)
@@ -904,7 +904,7 @@ accumulate_aggregate_info (struct agr_proc *agr,
          iter->int1++;
          break;
        default:
-         assert (0);
+         NOT_REACHED ();
        }
     }
 }
@@ -1033,7 +1033,7 @@ dump_aggregate_info (struct agr_proc *agr, struct ccase *output)
            v->f = i->int1;
            break;
          default:
-           assert (0);
+           NOT_REACHED ();
          }
       }
   }
index d13a14328449768115255cbcc17b0810100c84e1..a2115cef8aaac660d337e03e05f5b5a1336cb7be 100644 (file)
@@ -47,6 +47,7 @@
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
 #include <libpspp/array.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/hash.h>
 #include <libpspp/magic.h>
@@ -1799,8 +1800,7 @@ display_crosstabulation (void)
                                 * (1. - col_tot[c] / W)));
                    break;
                  default:
-                   assert (0);
-                    abort ();
+                    NOT_REACHED ();
                  }
 
                 format_cell_entry (table, c, i, v, suffix, mark_missing);
@@ -1855,8 +1855,7 @@ display_crosstabulation (void)
                 v = 0.;
                 break;
               default:
-                assert (0);
-                abort ();
+                NOT_REACHED ();
               }
 
             format_cell_entry (table, n_cols, 0, v, suffix, mark_missing);
@@ -1911,8 +1910,7 @@ display_crosstabulation (void)
              case CRS_CL_ASRESIDUAL:
                continue;
              default:
-               assert (0);
-                abort ();
+                NOT_REACHED ();
              }
 
             format_cell_entry (table, c, i, v, suffix, mark_missing);
index 0e9b56c5c87ecf7962db9cacd7083d9c29c8f2b8..0b452cb721942a5bcf33f13f5c248d3d0293a88d 100644 (file)
@@ -41,6 +41,7 @@
 #include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
 #include <libpspp/array.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
 #include <libpspp/misc.h>
@@ -538,7 +539,7 @@ flip_source_read (struct case_source *source,
           else if (feof (flip->file))
             msg (SE, _("Unexpected end of file reading FLIP temporary file."));
           else
-            abort ();
+            NOT_REACHED ();
           ok = false;
           break;
         }
index 5c3de42cac15096a53f9e1eb7b7e1b5cd8bd114b..c1e40d62a4f45f47984be353d172fedada8429d6 100644 (file)
@@ -557,7 +557,7 @@ calc (const struct ccase *c, void *aux UNUSED)
            ft->out_of_range += weight;
          break;
        default:
-         assert (0);
+          NOT_REACHED ();
        }
     }
   return true;
@@ -645,7 +645,7 @@ postcalc (void *aux UNUSED)
              dump_full (v);
            break;
          default:
-           assert (0);
+            NOT_REACHED ();
          }
       else
        dumped_freq_tab = 0;
@@ -706,7 +706,7 @@ get_freq_comparator (int frq_sort, int var_type)
     case FRQ_AFREQ | (ALPHA << 16):     return compare_freq_alpha_a;
     case FRQ_DFREQ | (NUMERIC << 16):   return compare_freq_numeric_d;
     case FRQ_DFREQ | (ALPHA << 16):     return compare_freq_alpha_d;
-    default: assert (0);
+    default: NOT_REACHED ();
     }
 
   return 0;
index 3116f625d94347243dcbf39b91d64c554fff76fb..9e332df87be2a9bcb1f88e74aefc0d96ea8018d0 100644 (file)
@@ -36,6 +36,7 @@
 #include <language/dictionary/split-file.h>
 #include <language/lexer/lexer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/hash.h>
 #include <libpspp/magic.h>
@@ -623,7 +624,7 @@ ssbox_create(struct ssbox *ssb, struct cmd_t_test *cmd, int mode)
        ssbox_paired_init(ssb,cmd);
        break;
       default:
-       assert(0);
+       NOT_REACHED ();
       }
 }
 
@@ -937,7 +938,7 @@ trbox_create(struct trbox *trb,
        trbox_paired_init(trb,cmd);
        break;
       default:
-       assert(0);
+        NOT_REACHED ();
       }
 }
 
@@ -1970,7 +1971,7 @@ hash_group_binary(const struct group_statistics *g,
       flag = which_group(g,p);
     }
   else
-    assert(0);
+    NOT_REACHED ();
 
   return flag;
 }
index b403843a1abe604c9f4d683c10e6cf542db10365..4a603de7ad7be23800874f679b20b0701bfbd9a6 100644 (file)
@@ -110,6 +110,8 @@ int tgetnum (const char *);
      xsort=xsort:yes/no.
 */
 
+/* (headers) */
+
 /* (declarations) */
 
 /* (_functions) */
index 5aaeb55923c192aa60720ab508df96a890468bef..03fd0bc3dd0fc6132e781b452f16473d5069a910 100644 (file)
@@ -34,6 +34,7 @@
 #include <language/lexer/variable-parser.h>
 #include <language/lexer/range-parser.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/magic.h>
 #include <libpspp/message.h>
@@ -560,7 +561,7 @@ find_src_numeric (struct recode_trns *trns, double value, struct variable *v)
           match = true;
           break;
         default:
-          abort ();
+          NOT_REACHED ();
         }
 
       if (match)
@@ -609,7 +610,7 @@ find_src_string (struct recode_trns *trns, const char *value, int width)
             break;
           }
         default:
-          abort ();
+          NOT_REACHED ();
         }
 
       if (match)
index a9f270c64e910512f0bd9f5cceb5072d45a2116a..0d70006098b916d241f891c7c48876997334926a 100644 (file)
@@ -1,3 +1,18 @@
+Fri Jul  7 20:01:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add assertion.h.
+       
+       * assertion.h: New file.  Replaced usage of assert(0) and abort()
+       with NOT_REACHED() from this file throughout the source tree.
+
+       * message.c: (request_bug_report_and_abort) Revise message printed
+       to include request to include lines above the message, which
+       should include an assertion failure message in many cases.
+       (msg_assert_fail) Removed.
+
+       * message.h: (assert) Removed.
+       (request_bug_report_and_abort) Mark NO_RETURN.
+
 Mon Jul  3 09:36:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
 
        * i18n.c: Made character conversion tolerant of failure to create the 
index 945874cf1d2993395427aea102e0175a6f08dff7..f4fca27e7d5920d16694f30e1bfffe5d68949c97 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include "alloc.h"
+#include <libpspp/assertion.h>
 
-/* Some of the assertions in this file are very expensive.  We
-   don't use them by default. */
-#ifdef EXTRA_CHECKS
-#define expensive_assert(X) assert(X)
-#else
-#define expensive_assert(X) ((void) 0)
-#endif
 #include "message.h"
 \f
 /* Finds an element in ARRAY, which contains COUNT elements of
diff --git a/src/libpspp/assertion.h b/src/libpspp/assertion.h
new file mode 100644 (file)
index 0000000..96b2d6f
--- /dev/null
@@ -0,0 +1,42 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+   Written by John Darrington <john@darrington.wattle.id.au>
+   and Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   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., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#ifndef __PSPP_ASSERT_H
+#define __PSPP_ASSERT_H
+
+#include <stdlib.h>
+#include "compiler.h"
+
+#define NOT_REACHED() do { assert (0); abort (); } while (0)
+
+#endif 
+
+#include <assert.h>
+
+#ifndef ASSERT_LEVEL
+#define ASSERT_LEVEL 2
+#endif
+
+#undef expensive_assert
+#if ASSERT_LEVEL >= 5
+#define expensive_assert(EXPR) assert (EXPR)
+#else
+#define expensive_assert(EXPR) ((void) 0)
+#endif
index a81549665c254f90a3634d055d8110c1c93acc1f..98681f8bb73858169a44ba0f7eff84a6a0f46058 100644 (file)
@@ -6,6 +6,7 @@ noinst_LIBRARIES += src/libpspp/libpspp.a
 src_libpspp_libpspp_a_SOURCES = \
        src/libpspp/array.c \
        src/libpspp/array.h \
+       src/libpspp/assertion.h \
        src/libpspp/alloc.c \
        src/libpspp/alloc.h \
        src/libpspp/bit-vector.h \
index fe16c6b22bf72e4972f96632d95208133b5933bc..eaad1a69f3e596d612b7e97eb0a9e547324ae8df 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #include <libpspp/alloc.h>
 #include <libpspp/version.h>
@@ -122,58 +123,30 @@ msg_get_command_name (void)
 }
 
 void 
-request_bug_report_and_abort(const char *msg )
+request_bug_report_and_abort (const char *msg)
 {
-  fprintf(stderr,
-         "******************************************************************\n"
-         "You have discovered a bug in PSPP.\n\n"
-         "  Please report this, by sending "
-         "an email to " PACKAGE_BUGREPORT ",\n"
-         "explaining what you were doing when this happened, and including\n"
-         "a sample of your input file which caused it.\n");
-
-  fprintf(stderr,
-         "Also, please copy the following lines into your bug report:\n\n"
-         "bare_version:        %s\n" 
-         "version:             %s\n"
-         "stat_version:        %s\n"
-         "host_system:         %s\n"
-         "build_system:        %s\n"
-         "default_config_path: %s\n"
-         "include_path:        %s\n"
-         "locale_dir:          %s\n"
-         "compiler version:    %s\n"
-         ,
-
-         bare_version,         
-         version,
-         stat_version,
-         host_system,        
-         build_system,
-         default_config_path,
-         include_path, 
-         locale_dir,
+  fprintf (stderr, "******************************************************\n");
+  fprintf (stderr, "You have discovered a bug in PSPP.  Please report this\n");
+  fprintf (stderr, "to " PACKAGE_BUGREPORT ".  Please include this entire\n");
+  fprintf (stderr, "message, *plus* several lines of output just above it.\n");
+  fprintf (stderr, "For the best chance at having the bug fixed, also\n");
+  fprintf (stderr, "include the syntax file that triggered it and a sample\n");
+  fprintf (stderr, "of any data file used for input.\n");
+  fprintf (stderr, "proximate cause:     %s\n", msg);
+  fprintf (stderr, "version:             %s\n", stat_version);
+  fprintf (stderr, "host_system:         %s\n", host_system);
+  fprintf (stderr, "build_system:        %s\n", build_system);
+  fprintf (stderr, "default_config_path: %s\n", default_config_path);
+  fprintf (stderr, "include_path:        %s\n", include_path);
+  fprintf (stderr, "locale_dir:          %s\n", locale_dir);
+  fprintf (stderr, "compiler version:    %s\n",
 #ifdef __VERSION__
-         __VERSION__
+           __VERSION__
 #else
-         "Unknown"
+           "Unknown"
 #endif
-         );     
+           );     
+  fprintf (stderr, "******************************************************\n");
 
-  if ( msg )
-    fprintf(stderr,"Diagnosis: %s\n",msg);
-
-  fprintf(stderr,
-    "******************************************************************\n");
-
-  abort();
+  _exit (EXIT_FAILURE);
 }
-
-void 
-msg_assert_fail(const char *expr, const char *file, int line)
-{
-  char msg[256];
-  snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr);
-  request_bug_report_and_abort( msg );
-}
-
index 9f037cb264d80683c54f8377c56a5e5254b9f1a2..604f185d530b42d37b9f0f68440a375839918d86 100644 (file)
@@ -107,15 +107,6 @@ void msg_pop_msg_locator (const struct msg_locator *);
 
 
 /* Used in panic situations only. */
-void request_bug_report_and_abort (const char *msg);
-
-void msg_assert_fail (const char *expr, const char *file, int line);
-
-#undef __STRING
-#define __STRING(x) #x
-#undef assert
-                              
-#define assert(expr) ( (void) ( expr ? (void) 0 : \
-              msg_assert_fail(__STRING(expr), __FILE__, __LINE__)) )
+void request_bug_report_and_abort (const char *msg) NO_RETURN;
 
 #endif /* message.h */
index 0e6c9358fc828cd10f027c32d9f5750c7ffd5c23..d4c00b38037a6d754dbde33b6cb5774d3aebe891 100644 (file)
@@ -21,6 +21,7 @@
 #include "pool.h"
 #include <stdlib.h>
 #include "alloc.h"
+#include <libpspp/assertion.h>
 #include "message.h"
 #include "size_max.h"
 #include "str.h"
@@ -915,7 +916,7 @@ free_gizmo (struct pool_gizmo *gizmo)
       gizmo->p.registered.free (gizmo->p.registered.p);
       break;
     default:
-      assert (0);
+      NOT_REACHED ();
     }
 }
 
index 63c1dd9ecc6417dfef852e5122d99e9c3f61c1dc..8678f56ca9fa959f9f3acef1d42f97f57eba3974 100644 (file)
   Create design matrices for procedures that need them.
 */
 #include <config.h>
+
+#include "design-matrix.h"
+
+#include <assert.h>
+#include <math.h>
 #include <stdlib.h>
+#include <string.h>
+
 #include <libpspp/alloc.h>
 #include <libpspp/message.h>
 #include <data/variable.h>
 #include <data/category.h>
-#include "design-matrix.h"
-#include <string.h>
-#include <math.h>
+
 #include <gsl/gsl_machine.h>
 #include <gsl/gsl_vector.h>
 #include <gsl/gsl_matrix.h>
index 01e955334c9480cccc47f385519367d490e41d5e..3ce5da5707cb2ab1d3508eadf3c48a7ad5b6f0a2 100644 (file)
@@ -37,6 +37,7 @@
 #include <language/expressions/public.h>
 #include <libpspp/alloc.h>
 #include <libpspp/array.h>
+#include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
 #include <libpspp/misc.h>
@@ -173,7 +174,7 @@ do_internal_sort (struct casereader *reader,
             {
               bool ok = casereader_read_xfer (reader, &cases[i].c);
               if (!ok)
-                abort ();
+                NOT_REACHED ();
               cases[i].idx = i;
             }
 
@@ -183,7 +184,7 @@ do_internal_sort (struct casereader *reader,
           for (i = 0; i < case_cnt; i++)
             casefile_append_xfer (dst, &cases[i].c);
           if (casefile_error (dst))
-            abort ();
+            NOT_REACHED ();
 
           free (cases);
         }
index fedd93154ddbbbe924eeed4753e5f3a68f4f94f2..e45ab85df4cd509524d036e416d4b69edea363ee 100644 (file)
@@ -31,6 +31,7 @@
 #include <setjmp.h>
 #include "error.h"
 #include "minmax.h"
+#include <libpspp/assertion.h>
 #include <libpspp/pool.h>
 #include <libpspp/str.h>
 
@@ -1146,7 +1147,7 @@ afm_encode_string (const struct afm *afm,
           break;
       
         default:
-          abort ();
+          NOT_REACHED ();
         }
       binary_finish (&e);
     }
index e4b10270dc25cac3d3a01360da462ed598be31ea..3dba9775685a89adb5be924da8ea64b849f0d88d 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <data/file-name.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/pool.h>
 #include <libpspp/start-date.h>
@@ -323,7 +324,7 @@ handle_option (struct outp_driver *this, const char *key,
            this->width = arg;
            break;
          default:
-           abort ();
+           NOT_REACHED ();
          }
       }
       break;
@@ -365,7 +366,7 @@ handle_option (struct outp_driver *this, const char *key,
            x->tab_width = arg;
            break;
          default:
-           abort ();
+           NOT_REACHED ();
          }
       }
       break;
@@ -395,12 +396,12 @@ handle_option (struct outp_driver *this, const char *key,
             x->squeeze_blank_lines = setting;
             break;
          default:
-           abort ();
+           NOT_REACHED ();
          }
       }
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   return true;
@@ -511,7 +512,7 @@ text_draw (struct outp_driver *this,
       x += width - length;
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   if (y >= this->length || x >= this->width)
index 497251f07eda20677029b3066196a9aa13250a15..8a1dc0bd1fbed3f5f3943dc41adb69935b7fce8f 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <libpspp/str.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <output/manager.h>
 #include <output/output.h>
 
@@ -76,7 +77,7 @@ draw_tick(struct chart *chart,
   else if (orientation == TICK_ORDINATE ) 
       pl_flinerel_r(chart->lp, 0, position, -tickSize, position);
   else
-    assert(0);
+    NOT_REACHED ();
 
   if ( label ) {
     char buf[10];
index b79deb45fac95c23c8ea33d543101f7c4fb84fbd..021200bc9749125437631b9b07fd6ee095c86825 100644 (file)
@@ -27,6 +27,7 @@
 #include <unistd.h>
 
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <data/file-name.h>
 #include "error.h"
@@ -183,11 +184,11 @@ handle_option (struct outp_driver *this,
           error (0, 0, _("`chart-files' value must contain `#'"));
           break;
         default:
-          abort ();
+          NOT_REACHED ();
         }
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
   
   return true;
@@ -212,7 +213,7 @@ html_submit (struct outp_driver *this, struct som_entity *s)
       link_image (x->file, ((struct chart *)s->ext)->file_name);
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
index c8ff70c0d1a37917e2f1738512f181de7d3de6b6..468b2c23e5d93b8c1945a2e71bc5458108249c84 100644 (file)
@@ -21,6 +21,7 @@
 #include "manager.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <libpspp/assertion.h>
 #include "output.h"
 
 /* Table. */
@@ -110,7 +111,7 @@ som_submit (struct som_entity *t)
        {
          printf ("headers: (l,r)=(%d,%d), (t,b)=(%d,%d) in table size (%d,%d)\n",
                  hl, hr, ht, hb, nc, nr);
-         abort ();
+         NOT_REACHED ();
        }
       else if (hl + hr == nc)
        printf ("warning: headers (l,r)=(%d,%d) in table width %d\n", hl, hr, nc);
index d65162dad4c3e1bd8fd0cb2b687b4fef0276f283..bd7a088a07e3d14a7e473072dfbdafd609e9dd1a 100644 (file)
@@ -27,6 +27,7 @@
 #include <unistd.h>
 
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/bit-vector.h>
 #include <libpspp/compiler.h>
 #include <libpspp/freaderror.h>
@@ -374,7 +375,7 @@ handle_option (struct outp_driver *this, const char *key,
            this->font_height = arg;
            break;
          default:
-           abort ();
+           NOT_REACHED ();
          }
       }
       break;
@@ -400,7 +401,7 @@ handle_option (struct outp_driver *this, const char *key,
            x->line_width = dimension;
            break;
          default:
-           abort ();
+           NOT_REACHED ();
          }
       }
       break;
@@ -417,7 +418,7 @@ handle_option (struct outp_driver *this, const char *key,
       }
       break;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 
   return true;
@@ -608,8 +609,7 @@ ps_submit (struct outp_driver *this UNUSED, struct som_entity *s)
     case SOM_CHART:
       break;
     default:
-      abort ();
-      break;
+      NOT_REACHED ();
     }
 }
 \f
index 1b120124a4ce8022893d153e2b0d91117070ee41..430742d743f3c045c3f6c3c8f7f397db816826c5 100644 (file)
@@ -24,6 +24,7 @@
 #include <limits.h>
 #include <stdlib.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <data/format.h>
 #include <libpspp/magic.h>
@@ -305,7 +306,7 @@ tab_box (struct tab_table *t, int f_h, int f_v, int i_h, int i_v,
              x2, t->col_ofs, x2 + t->col_ofs,
              y2, t->row_ofs, y2 + t->row_ofs,
              t->nc, t->nr);
-      abort ();
+      NOT_REACHED ();
     }
 #endif
 
@@ -804,12 +805,12 @@ tab_offset (struct tab_table *t, int col, int row)
   if (row < -1 || row >= t->nr)
     {
       printf ("tab_offset(): row=%d in %d-row table\n", row, t->nr);
-      abort ();
+      NOT_REACHED ();
     }
   if (col < -1 || col >= t->nc)
     {
       printf ("tab_offset(): col=%d in %d-column table\n", col, t->nc);
-      abort ();
+      NOT_REACHED ();
     }
 #endif
 
@@ -870,7 +871,7 @@ rule_to_spacing_type (unsigned char type)
     case TAL_2:
       return OUTP_L_DOUBLE;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
@@ -1256,7 +1257,7 @@ translate_justification (unsigned int opt)
     case TAB_CENTER:
       return OUTP_CENTER;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
@@ -1275,7 +1276,7 @@ rule_to_draw_type (unsigned char type)
     case TAL_2:
       return OUTP_L_DOUBLE;
     default:
-      abort ();
+      NOT_REACHED ();
     }
 }
 
index 039ac64460916ae31328606c1aea22603ff5375e..7129d050c249c9ac74530efc2fd807c0f5081bde 100644 (file)
@@ -1,3 +1,8 @@
+Fri Jul  7 20:03:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * main.c: (main) Register SIGABRT with bug_handler also.
+       (bug_handler) Handle SIGABRT also.
+
 Tue Jun 27 22:44:56 2006  Ben Pfaff  <blp@gnu.org>
 
        Fix regression in command name completion reported by John
index 94c5eea10e3acfc3996a3fede7ddaacd57a29b10..8511f290efab920d06d8a4bd33360f1e18723c72 100644 (file)
@@ -26,6 +26,7 @@
 #include <getopt.h>
 #include <stdlib.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/copyleft.h>
 #include <libpspp/message.h>
 #include <language/line-buffer.h>
@@ -180,7 +181,7 @@ parse_command_line (int argc, char **argv)
        case 0:
          break;
        default:
-         assert (0);
+         NOT_REACHED ();
        }
     }
 
index 2ad53d36d4e4e3da16dea2580ed41c1c439933a7..edc59eddaf6a8440bde2daa940dffe1411324bc8 100644 (file)
@@ -75,6 +75,7 @@ void interrupt_handler(int sig);
 int
 main (int argc, char **argv)
 {
+  signal (SIGABRT, bug_handler);
   signal (SIGSEGV, bug_handler);
   signal (SIGFPE, bug_handler);
   signal (SIGINT, interrupt_handler);
@@ -149,15 +150,14 @@ bug_handler(int sig)
 {
   switch (sig) 
     {
+    case SIGABRT:
+      request_bug_report_and_abort("Assertion Failure/Abort");
     case SIGFPE:
       request_bug_report_and_abort("Floating Point Exception");
-      break;
     case SIGSEGV:
       request_bug_report_and_abort("Segmentation Violation");
-      break;
     default:
-      request_bug_report_and_abort("");
-      break;
+      request_bug_report_and_abort("Unknown");
     }
 }