Hello list.

I'm using the very latest GNU-make built on Win-10 by myself.
Except I've disabled the call to 'SetUnhandledExceptionFilter()'.

In one particular Wine Makefile I get a crash in 'hash_free_items()':
  gnumake!hash_free_items+0x22
  gnumake!hash_free+0x30
  gnumake!clear_directory_contents+0x34
  gnumake!find_directory+0xed
  gnumake!dir_file_exists_p+0xd
  gnumake!selective_vpath_search+0x239
  gnumake!vpath_search+0x9d
  gnumake!pattern_search+0x1212
...


This is when creating an .res-file from a .rc-file.
And I use this 'vpath %.rc obj' construct.

I've a hard time creating a minimal example, but running
with max debug (make --debug=verbose), I see this:

    Considering target file 'objects/oleview.res'.
     File 'objects/oleview.res' does not exist.
Directory objects cache invalidated (count 1 != command 42)
Directory . cache invalidated (count 40 != command 42)
      Considering target file 'oleview.rc'.
Directory RCS cache invalidated (count 40 != command 42)
Directory ./objects cache invalidated (count 0 != command 42)

----------

What does 'count 0' means?

So just sensing 'ctr == 0' is important, I did this:

--- a/dir.c 2022-11-27 02:43:12
+++ b/dir.c 2022-12-30 11:18:00
@@ -493,7 +493,7 @@
       DB (DB_VERBOSE, ("Directory %s cache invalidated (count %lu != command 
%lu)\n",
                        name, ctr, command_count));

-      if (dir->contents)
+      if (dir->contents && ctr > 0)
         clear_directory_contents (dir->contents);
     }
   else

---------------


and no more crash in that special Makefile.

--
--gv

Reply via email to