re PR preprocessor/17610 (Empty #include statement halts gcc)
authorNathanael Nerode <neroden@gcc.gnu.org>
Sun, 28 Nov 2004 22:28:13 +0000 (22:28 +0000)
committerNathanael Nerode <neroden@gcc.gnu.org>
Sun, 28 Nov 2004 22:28:13 +0000 (22:28 +0000)
(libcpp)
PR preprocessor/17610
* directives.c (do_include_common): Error out if an empty filename
is given for #include (or #include_next or #import).

(gcc)
PR preprocessor/17610
* testsuite/gcc.dg/cpp/empty-include.c: New testcase.

From-SVN: r91428

gcc/ChangeLog
gcc/testsuite/gcc.dg/cpp/empty-include.c [new file with mode: 0644]
libcpp/ChangeLog
libcpp/directives.c

index b040c2a8b22fd37e0cb1ed16356607e2eef1ed61..4a87144706cc87d0bde0917dc8bda421c100f992 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-28  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       PR preprocessor/17610
+       * testsuite/gcc.dg/cpp/empty-include.c: New testcase.
+
 2004-11-28  Jeff Law  <law@redhat.com>
 
        * tree-ssa-alias.c (count_calls_and_maybe_create_global_var): New.
diff --git a/gcc/testsuite/gcc.dg/cpp/empty-include.c b/gcc/testsuite/gcc.dg/cpp/empty-include.c
new file mode 100644 (file)
index 0000000..6b5a47c
--- /dev/null
@@ -0,0 +1,13 @@
+/* 
+ * Copyright 2004 Free Software Foundation, Inc.
+ * Contributed and written by Nathanael Nerode.
+ *
+ * GCC 3.4 would attempt to open stdin as the included file
+ * (PR 17610), causing a sort of hang.
+ * 
+ * We should get an error.
+ */
+
+/* {dg-do preprocess} */
+#include "" /* { dg-error "empty" "error on empty filename in include" } */
+int x; /* Otherwise we have an empty file and get more errors. */
index 2b709b418a2c625f8e618c984838bdc614004649..3b01f82668f08e130133254e44d1c3861143f0cb 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-28  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       PR preprocessor/17610 
+       * directives.c (do_include_common): Error out if an empty filename
+       is given for #include (or #include_next or #import).
+
 2004-11-27  Roger Sayle  <roger@eyesopen.com>
            Zack Weinberg  <zack@codesourcery.com>
 
index a835b6812a5349dfa62c2a0f134e5fc76c155244..fe1867d569ad1050a099dc229af2ff64baadb210 100644 (file)
@@ -668,6 +668,14 @@ do_include_common (cpp_reader *pfile, enum include_type type)
   if (!fname)
     return;
 
+  if (!*fname)
+  {
+    cpp_error (pfile, CPP_DL_ERROR, "empty filename in #%s",
+               pfile->directive->name);
+    free ((void *) fname);
+    return;
+  }
+
   /* Prevent #include recursion.  */
   if (pfile->line_table->depth >= CPP_STACK_MAX)
     cpp_error (pfile, CPP_DL_ERROR, "#include nested too deeply");