diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b040c2a8b22..4a87144706c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-11-28 Nathanael Nerode + + PR preprocessor/17610 + * testsuite/gcc.dg/cpp/empty-include.c: New testcase. + 2004-11-28 Jeff Law * 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 index 00000000000..6b5a47cbba7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/empty-include.c @@ -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. */ diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 2b709b418a2..3b01f82668f 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2004-11-28 Nathanael Nerode + + 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 Zack Weinberg diff --git a/libcpp/directives.c b/libcpp/directives.c index a835b6812a5..fe1867d569a 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -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");