Fix a core dump when reading_file is 0 (20033).

Fix some manual typos (20018).
This commit is contained in:
Paul Smith 2007-06-19 04:47:58 +00:00
parent eda0e24ccd
commit a940199072
4 changed files with 23 additions and 8 deletions

View file

@ -1,3 +1,13 @@
2007-06-13 Paul Smith <psmith@gnu.org>
* doc/make.texi (Reading Makefiles): "Expansion of deferred" ->
"Expansion of a deferred"
Fixes Savannah bug #20018.
* expand.c (variable_expand_for_file): Preserve the value of
reading_file rather than setting it to 0 at the end.
Fixes Savannah bug #20033.
2007-05-11 Paul Smith <psmith@gnu.org>
* job.c (new_job): Add debug info to specify where make found the

View file

@ -1541,7 +1541,7 @@ constructs within the makefile. We say that expansion is
@code{make} will expand any variables or functions in that section of a
construct as the makefile is parsed. We say that expansion is
@dfn{deferred} if expansion is not performed immediately. Expansion of
deferred construct is not performed until either the construct appears
a deferred construct is not performed until either the construct appears
later in an immediate context, or until the second phase.
You may not be familiar with some of these constructs yet. You can

View file

@ -460,20 +460,25 @@ char *
variable_expand_for_file (const char *line, struct file *file)
{
char *result;
struct variable_set_list *save;
struct variable_set_list *savev;
const struct floc *savef;
if (file == 0)
return variable_expand (line);
save = current_variable_set_list;
savev = current_variable_set_list;
current_variable_set_list = file->variables;
savef = reading_file;
if (file->cmds && file->cmds->fileinfo.filenm)
reading_file = &file->cmds->fileinfo;
else
reading_file = 0;
result = variable_expand (line);
current_variable_set_list = save;
reading_file = 0;
current_variable_set_list = savev;
reading_file = savef;
return result;
}

6
read.c
View file

@ -463,7 +463,7 @@ eval (struct ebuffer *ebuf, int set_default)
#define record_waiting_files() \
do \
{ \
{ \
if (filenames != 0) \
{ \
fi.lineno = tgts_started; \
@ -570,7 +570,7 @@ eval (struct ebuffer *ebuf, int set_default)
remove_comments (collapsed);
/* Compare a word, both length and contents. */
#define word1eq(s) (wlen == sizeof(s)-1 && strneq (s, p, sizeof(s)-1))
#define word1eq(s) (wlen == sizeof(s)-1 && strneq (s, p, sizeof(s)-1))
p = collapsed;
while (isspace ((unsigned char)*p))
++p;
@ -608,7 +608,7 @@ eval (struct ebuffer *ebuf, int set_default)
if (!in_ignored_define)
{
int i = conditional_line (p, wlen, fstart);
int i = conditional_line (p, wlen, fstart);
if (i != -2)
{
if (i == -1)