- Fix Savannah bug #21824: don't loop through NULL cmds pointer

- Fix Savannah bugs #24509, 18963: doc enhancements
This commit is contained in:
Paul Smith 2009-09-12 21:28:33 +00:00
parent 70c726c875
commit 958ea92eb8
3 changed files with 24 additions and 8 deletions

View file

@ -3,8 +3,21 @@
* function.c (windows32_openpipe): Update envp after calling
sync_Path_environment.
2009-08-02 Paul Smith <psmith@gnu.org>
* remake.c (notice_finished_file): Ensure file->cmds is not null
before looping through them. Fixes Savannah bug #21824.
* doc/make.texi (Wildcard Examples): Clarify when objects is
wildcard-expanded. Fixes Savannah bug #24509. Patch by Martin Dorey.
(Include): Clarify the behavior of -include.
Fixes Savannah bug #18963.
2009-08-01 Paul Smith <psmith@gnu.org>
* doc/make.texi (Catalogue of Rules): Clarify where -c, -F,
etc. come on the command line. Fixes Savannah bug #27093.
* expand.c (expand_argument): If the argument is large enough use
xmalloc() instead of alloca(). Fixes Savannah bug #27143.

View file

@ -1171,7 +1171,7 @@ Only after it has tried to find a way to remake a makefile and failed,
will @code{make} diagnose the missing makefile as a fatal error.
If you want @code{make} to simply ignore a makefile which does not exist
and cannot be remade, with no error message, use the @w{@code{-include}}
or cannot be remade, with no error message, use the @w{@code{-include}}
directive instead of @code{include}, like this:
@example
@ -1179,7 +1179,10 @@ directive instead of @code{include}, like this:
@end example
This acts like @code{include} in every way except that there is no
error (not even a warning) if any of the @var{filenames} do not exist.
error (not even a warning) if any of the @var{filenames} (or any
prerequisites of any of the @var{filenames}) do not exist or cannot be
remade.
For compatibility with some other @code{make} implementations,
@code{sinclude} is another name for @w{@code{-include}}.
@ -1966,9 +1969,11 @@ objects = *.o
@noindent
then the value of the variable @code{objects} is the actual string
@samp{*.o}. However, if you use the value of @code{objects} in a target,
prerequisite, or recipe, wildcard expansion will take place at that time.
To set @code{objects} to the expansion, instead use:
@samp{*.o}. However, if you use the value of @code{objects} in a
target or prerequisite, wildcard expansion will take place there. If
you use the value of @code{objects} in a recipe, the shell may perform
wildcard expansion when the recipe runs. To set @code{objects} to the
expansion, instead use:
@example
objects := $(wildcard *.o)

View file

@ -82,7 +82,6 @@ int
update_goal_chain (struct dep *goals)
{
int t = touch_flag, q = question_flag, n = just_print_flag;
unsigned int j = job_slots;
int status = -1;
#define MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \
@ -263,7 +262,6 @@ update_goal_chain (struct dep *goals)
touch_flag = t;
question_flag = q;
just_print_flag = n;
job_slots = j;
}
return status;
@ -872,7 +870,7 @@ notice_finished_file (struct file *file)
really check the target's mtime again. Otherwise, assume the target
would have been updated. */
if (question_flag || just_print_flag || touch_flag)
if (question_flag || just_print_flag || touch_flag && file->cmds != 0)
{
for (i = file->cmds->ncommand_lines; i > 0; --i)
if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE))