Avoid some useless memory copying.
[rsync/rsync.git] / checksum.c
index ce30e72..ff9b1fa 100644 (file)
@@ -94,7 +94,6 @@ void file_checksum(char *fname,char *sum,OFF_T size)
        struct map_struct *buf;
        int fd;
        OFF_T len = size;
-       char tmpchunk[CSUM_CHUNK];
        struct mdfour m;
        
        memset(sum,0,MD4_SUM_LENGTH);
@@ -107,22 +106,16 @@ void file_checksum(char *fname,char *sum,OFF_T size)
        mdfour_begin(&m);
 
        for(i = 0; i + CSUM_CHUNK <= len; i += CSUM_CHUNK) {
-               memcpy(tmpchunk, map_ptr(buf,i,CSUM_CHUNK), CSUM_CHUNK);
-               mdfour_update(&m, (uchar *)tmpchunk, CSUM_CHUNK);
+               mdfour_update(&m, (uchar *)map_ptr(buf, i, CSUM_CHUNK),
+                             CSUM_CHUNK);
        }
 
-       /*
-        * Prior to version 27 an incorrect MD4 checksum was computed
+       /* Prior to version 27 an incorrect MD4 checksum was computed
         * by failing to call mdfour_tail() for block sizes that
         * are multiples of 64.  This is fixed by calling mdfour_update()
-        * even when there are no more bytes.
-        */
-       if (len - i > 0) {
-               memcpy(tmpchunk, map_ptr(buf,i,len-i), len-i);
-       }
-       if (len - i > 0 || protocol_version >= 27) {
-               mdfour_update(&m, (uchar *)tmpchunk, (len-i));
-       }
+        * even when there are no more bytes. */
+       if (len - i > 0 || protocol_version >= 27)
+               mdfour_update(&m, (uchar *)map_ptr(buf, i, len-i), len-i);
 
        mdfour_result(&m, (uchar *)sum);