In the pipe creation code, the st_ino check is against the uninitialized copy instead of the real ino_t.

-John
[EMAIL PROTECTED]
Personal Opinion Only.
--- /rsync_root/perl/vms/vms.c  Sat Oct 22 13:11:49 2005
+++ vms/vms.c   Sat Oct 22 20:12:06 2005
@@ -3123,9 +3123,9 @@
     fstat(fileno(fp), (struct stat *)&s1);
 
     #if defined(_USE_STD_STAT)
-      cmp_result = s0.st_ino != s1.st_ino;
+      cmp_result = s0.crtl_stat.st_ino != s1.crtl_stat.st_ino;
     #else
-      cmp_result = memcmp(&s0.st_ino, &s1.st_ino, 6);
+      cmp_result = memcmp(s0.crtl_stat.st_ino, s1.crtl_stat.st_ino, 6);
     #endif
     if ((cmp_result != 0) && (s0.st_ctime != s1.st_ctime))  {
         fclose(fp);
@@ -9080,7 +9080,11 @@
        if (cptr == NULL)
           namecache[0] = '\0';
     }
+#ifdef _USE_STD_STAT
+    memcpy(&statbufp->st_ino, &statbufp->crtl_stat.st_ino, 8);
+#else
     memcpy(&statbufp->st_ino, statbufp->crtl_stat.st_ino, 8);
+#endif
 #ifndef _USE_STD_STAT
     strncpy(statbufp->st_devnam, statbufp->crtl_stat.st_dev, 63);
     statbufp->st_devnam[63] = 0;
@@ -9196,7 +9200,11 @@
   }
 #endif
     if (!retval) {
+#ifdef _USE_STD_STAT
+      memcpy(&statbufp->st_ino, &statbufp->crtl_stat.st_ino, 8);
+#else
       memcpy(&statbufp->st_ino, statbufp->crtl_stat.st_ino, 8);
+#endif
 #ifndef _USE_STD_STAT
       strncpy(statbufp->st_devnam, statbufp->crtl_stat.st_dev, 63);
       statbufp->st_devnam[63] = 0;

Reply via email to