diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-06-03 02:47:52 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-06-03 02:47:52 +0000 |
commit | 100e5241b067bdc54457f5b6b28d8a1bcdedcf05 (patch) | |
tree | 0113a5784176e6f2bd7770064f457c2ee06fe82d /match.c | |
parent | ddecf7060b2b0316d29a2d4e13d2a4160e1badd7 (diff) | |
download | rsync-100e5241b067bdc54457f5b6b28d8a1bcdedcf05.tar.gz rsync-100e5241b067bdc54457f5b6b28d8a1bcdedcf05.tar.bz2 rsync-100e5241b067bdc54457f5b6b28d8a1bcdedcf05.zip |
the tag table should be of type int* not tag*.
This bug resulted in rsync being much less efficient that it could be
for files with more than 64k blocks. With the adaptive block size code
giving a maximum block size of 16k this means that files larger than
1GB were handled very inefficiently. The transfer was still accurate,
just slow.
Diffstat (limited to 'match.c')
-rw-r--r-- | match.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -29,7 +29,7 @@ extern int remote_version; typedef unsigned short tag; #define TABLESIZE (1<<16) -#define NULL_TAG ((tag)-1) +#define NULL_TAG (-1) static int false_alarms; static int tag_hits; @@ -49,7 +49,7 @@ struct target { static struct target *targets; -static tag *tag_table; +static int *tag_table; #define gettag2(s1,s2) (((s1) + (s2)) & 0xFFFF) #define gettag(sum) gettag2((sum)&0xFFFF,(sum)>>16) @@ -65,7 +65,7 @@ static void build_hash_table(struct sum_struct *s) int i; if (!tag_table) - tag_table = (tag *)malloc(sizeof(tag)*TABLESIZE); + tag_table = (int *)malloc(sizeof(tag_table[0])*TABLESIZE); targets = (struct target *)malloc(sizeof(targets[0])*s->count); if (!tag_table || !targets) |