- return (SAME_INODE (source_dir_stats, dest_dir_stats)
- && STREQ (base_name (source), base_name (dest)));
+ if (! SAME_INODE (source_dir_stats, dest_dir_stats))
+ return 0;
+
+ source_basename = base_name (source);
+ dest_basename = base_name (dest);
+ source_baselen = base_len (source_basename);
+ dest_baselen = base_len (dest_basename);
+ return (source_baselen == dest_baselen
+ && memcmp (source_basename, dest_basename, dest_baselen) == 0);