Commit 5af7e2c2 by Jakub Jelinek Committed by Zack Weinberg

cpplib.c (do_ifdef, do_ifndef): Don't segfault if parse_ifdef returned NULL.

2000-06-06  Jakub Jelinek  <jakub@redhat.com>

	* cpplib.c (do_ifdef, do_ifndef): Don't segfault if parse_ifdef
	returned NULL.

From-SVN: r34448
parent 69197e7e
2000-06-06 Jakub Jelinek <jakub@redhat.com>
* cpplib.c (do_ifdef, do_ifndef): Don't segfault if parse_ifdef
returned NULL.
Wed Jun 7 20:34:33 2000 Denis Chertykov <denisc@overta.ru> Wed Jun 7 20:34:33 2000 Denis Chertykov <denisc@overta.ru>
* config/avr/avr.c (asm_output_section_name): output section * config/avr/avr.c (asm_output_section_name): output section
......
...@@ -1126,10 +1126,13 @@ do_ifdef (pfile) ...@@ -1126,10 +1126,13 @@ do_ifdef (pfile)
{ {
int def = 0; int def = 0;
const cpp_hashnode *node = parse_ifdef (pfile, dtable[T_IFDEF].name); const cpp_hashnode *node = parse_ifdef (pfile, dtable[T_IFDEF].name);
if (node->type == T_POISON) if (node)
cpp_error (pfile, "attempt to use poisoned `%s'", node->name); {
else if (node->type == T_POISON)
def = (node->type != T_VOID); cpp_error (pfile, "attempt to use poisoned `%s'", node->name);
else
def = (node->type != T_VOID);
}
push_conditional (pfile, !def, T_IFDEF, 0); push_conditional (pfile, !def, T_IFDEF, 0);
return 0; return 0;
} }
...@@ -1147,11 +1150,13 @@ do_ifndef (pfile) ...@@ -1147,11 +1150,13 @@ do_ifndef (pfile)
start_of_file = pfile->only_seen_white == 2; start_of_file = pfile->only_seen_white == 2;
cmacro = parse_ifdef (pfile, dtable[T_IFNDEF].name); cmacro = parse_ifdef (pfile, dtable[T_IFNDEF].name);
if (cmacro->type == T_POISON) if (cmacro)
cpp_error (pfile, "attempt to use poisoned `%s'", cmacro->name); {
else if (cmacro->type == T_POISON)
def = (cmacro->type != T_VOID); cpp_error (pfile, "attempt to use poisoned `%s'", cmacro->name);
else
def = (cmacro->type != T_VOID);
}
push_conditional (pfile, def, T_IFNDEF, push_conditional (pfile, def, T_IFNDEF,
start_of_file ? cmacro : 0); start_of_file ? cmacro : 0);
return 0; return 0;
......
/* Regression test: #ifdef 0 should not crash. Problem noted by
Jakub Jelinek <jakub@redhat.com>. */
/* { dg-do preprocess } */
#ifdef 0 /* { dg-error "with invalid argument" } */
#error not seen
#endif
#ifndef 0 /* { dg-error "with invalid argument" } */
#else
#error not seen
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment