* ccache now knows how to contruct the object filename if no `-o` option is
given and the source filename does not include a `.` or ends with a `.`.
-* Fixed a temporary file leak when depend mode is enabled and the compiler
+* Fixed a bug in the depend mode where the last couple of include files in the
+ `.d` file was not taken into account.
+
+* Fixed a temporary file leak when the depend mode is enabled and the compiler
produces standard error output.
-* Fixed a bug in the “depend mode” where a manifest hash only could be
- associated with one set of header dependencies.
+* Fixed a bug in the depend mode where a manifest hash only could be associated
+ with one set of header dependencies.
* Manifest files did not get marked as used on direct cache hits, so the LRU
cache cleanup would incorrectly remove them eventually. This has now been
conf->direct_mode = false;
return NULL;
}
- char *manifest_name = hash_result(hash);
+
+ // We can't finalize hash here since its current state may be used by the
+ // depend mode code later, so make a copy.
+ struct hash *hash2 = hash_copy(hash);
+ char *manifest_name = hash_result(hash2);
+ hash_free(hash2);
manifest_path = get_path_in_cache(manifest_name, ".manifest");
free(manifest_name);
+
cc_log("Looking for object file hash in %s", manifest_path);
object_hash = manifest_get(conf, manifest_path);
if (object_hash) {