re PR java/17575 (gcjh does not clear its function name cache between files)
authorTom Tromey <tromey@redhat.com>
Tue, 21 Sep 2004 16:28:40 +0000 (16:28 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Tue, 21 Sep 2004 16:28:40 +0000 (16:28 +0000)
PR java/17575:
* gjavah.c (free_method_name_list): New method.
(main): Call it.

From-SVN: r87812

gcc/java/ChangeLog
gcc/java/gjavah.c

index f0311cc50498f3e4ce02872cc10e8f58293929a0..255eaaa6bbab4679cb621c79b441fa3432bd8f37 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-21  Tom Tromey  <tromey@redhat.com>
+
+       PR java/17575:
+       * gjavah.c (free_method_name_list): New method.
+       (main): Call it.
+
 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
            Zack Weinberg  <zack@codesourcery.com>
 
index 8f53df192ff9a299b945f3cec2637f0f5ff9a140..d62e585758e62788eb8dffefc2e53263ea03ade5 100644 (file)
@@ -636,6 +636,22 @@ name_is_method_p (const unsigned char *name, int length)
   return 0;
 }
 
+/* Free the method name list.  */
+static void
+free_method_name_list ()
+{
+  struct method_name *p = method_name_list;
+  while (p != NULL)
+    {
+      struct method_name *next = p->next;
+      free (p->name);
+      free (p->signature);
+      free (p);
+      p = next;
+    }
+  method_name_list = NULL;
+}
+
 /* If there is already a native method named NAME, whose signature is not
    SIGNATURE, then return true.  Otherwise return false.  */
 static int
@@ -2530,6 +2546,7 @@ main (int argc, char** argv)
                }
            }
        }
+      free_method_name_list ();
       process_file (&jcf, out);
       JCF_FINISH (&jcf);
       if (current_output_file != output_file)