- Fix Savannah bug #21824: don't loop through NULL cmds pointer
authorPaul Smith <psmith@gnu.org>
Sat, 12 Sep 2009 21:28:33 +0000 (21:28 +0000)
committerPaul Smith <psmith@gnu.org>
Sat, 12 Sep 2009 21:28:33 +0000 (21:28 +0000)
- Fix Savannah bugs #24509, 18963: doc enhancements

ChangeLog
doc/make.texi
remake.c

index 0a6c5b2..8c567c8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
index f73de46..c2ae06a 100644 (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)
index 4a4fb73..4cf8bd7 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -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))