Prevent procedure() from being called recursively.
authorBen Pfaff <blp@gnu.org>
Thu, 19 Feb 2004 05:33:11 +0000 (05:33 +0000)
committerBen Pfaff <blp@gnu.org>
Thu, 19 Feb 2004 05:33:11 +0000 (05:33 +0000)
src/ChangeLog
src/vfm.c

index 7c180a6d3f2818f967e6255eb27c14df3b7b3317..4f4f3eda7030852faeda9efff649717ca514e4f7 100644 (file)
@@ -1,3 +1,7 @@
+Wed Feb 18 21:32:44 2004  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: (procedure) Add check to prevent recursive call.
+
 Wed Feb 18 21:48:54 WST 2004 John Darrington <john@darrington.wattle.id.au>
 
        * Moved the declarations relating to values to their own header file
index e9c7d2048064d5abdc406fe1ddcadf83681f33dc..fb8c5febb4b85669b3b73f01ca1f25be6fe34a78 100644 (file)
--- a/src/vfm.c
+++ b/src/vfm.c
@@ -126,9 +126,13 @@ procedure (void (*beginfunc) (void *),
           void (*endfunc) (void *),
            void *aux)
 {
+  static int recursive_call;
+
   struct write_case_data procedure_write_data;
   struct write_case_data split_file_data;
 
+  assert (++recursive_call == 1);
+
   if (dict_get_split_cnt (default_dict) == 0) 
     {
       /* Normally we just use the data passed by the user. */
@@ -156,6 +160,8 @@ procedure (void (*beginfunc) (void *),
   open_active_file ();
   vfm_source->read (procedure_write_case, &procedure_write_data);
   close_active_file (&procedure_write_data);
+
+  assert (--recursive_call == 0);
 }
 \f
 /* Active file processing support.  Subtly different semantics from