path: root/diffcore-break.c
diff options
authorShawn O. Pearce <>2007-03-07 01:44:37 (GMT)
committerJunio C Hamano <>2007-03-07 19:15:26 (GMT)
commitdc49cd769b5fa6b7e0114b051c34a849828a7603 (patch)
tree7eafafcd36ab731599da3fb5e59d3f4379c342d3 /diffcore-break.c
parent6777a59fcdfd96b9ca5cba49cb265c6c47de3d02 (diff)
Cast 64 bit off_t to 32 bit size_t
Some systems have sizeof(off_t) == 8 while sizeof(size_t) == 4. This implies that we are able to access and work on files whose maximum length is around 2^63-1 bytes, but we can only malloc or mmap somewhat less than 2^32-1 bytes of memory. On such a system an implicit conversion of off_t to size_t can cause the size_t to wrap, resulting in unexpected and exciting behavior. Right now we are working around all gcc warnings generated by the -Wshorten-64-to-32 option by passing the off_t through xsize_t(). In the future we should make xsize_t on such problematic platforms detect the wrapping and die if such a file is accessed. Signed-off-by: Shawn O. Pearce <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'diffcore-break.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/diffcore-break.c b/diffcore-break.c
index acb18db..9c19b8c 100644
--- a/diffcore-break.c
+++ b/diffcore-break.c
@@ -89,7 +89,7 @@ static int should_break(struct diff_filespec *src,
* merge the surviving pair together if the score is
* less than the minimum, after rename/copy runs.
- *merge_score_p = src_removed * MAX_SCORE / src->size;
+ *merge_score_p = (int)(src_removed * MAX_SCORE / src->size);
/* Extent of damage, which counts both inserts and
* deletes.