composetable: invalidate cache based on symlink mtime too
authorNaïm Favier <n@monade.li>
Tue, 16 Nov 2021 11:53:38 +0000 (12:53 +0100)
committerNaïm Favier <n@monade.li>
Tue, 16 Nov 2021 11:53:38 +0000 (12:53 +0100)
When the compose file is a symbolic link, take the link itself's
modification time into account (in addition to its target's) in
determining whether to invalidate the compose cache.

This is useful e.g. on NixOS systems where the compose file might point
to a store path with an irrelevant modification time, and we want the
cache to expire when the symlink itself changes.

gtk/gtkcomposetable.c

index e7ed9d747468bfa0184a371fd4f01bd317b6a991..7951b04c4dd255cbcbf75002a51be676e9b0bf79 100644 (file)
@@ -755,8 +755,11 @@ gtk_compose_table_load_cache (const char *compose_file,
   if (!g_file_test (path, G_FILE_TEST_EXISTS))
     goto out_load_cache;
 
-  g_stat (compose_file, &original_buf);
   g_stat (path, &cache_buf);
+  g_lstat (compose_file, &original_buf);
+  if (original_buf.st_mtime > cache_buf.st_mtime)
+    goto out_load_cache;
+  g_stat (compose_file, &original_buf);
   if (original_buf.st_mtime > cache_buf.st_mtime)
     goto out_load_cache;
   if (!g_file_get_contents (path, &contents, &total_length, &error))