##// END OF EJS Templates
rhg: fix a bug in path_encode...
Arseniy Alekseyev -
r50991:06659dea default
parent child Browse files
Show More
@@ -542,11 +542,9 b' fn hash_mangle(src: &[u8], sha: &[u8]) -'
542 let mut dest = vec![0; MAXSTOREPATHLEN];
542 let mut dest = vec![0; MAXSTOREPATHLEN];
543 memcopy(Some(&mut dest), &mut destlen, b"dh/");
543 memcopy(Some(&mut dest), &mut destlen, b"dh/");
544
544
545 {
545 if let Some(last_slash) = last_slash {
546 let mut first = true;
546 let mut first = true;
547 for slice in
547 for slice in src[..last_slash].split(|b| *b == b'/') {
548 src[..last_slash.unwrap_or(src.len())].split(|b| *b == b'/')
549 {
550 let slice = &slice[..std::cmp::min(slice.len(), dirprefixlen)];
548 let slice = &slice[..std::cmp::min(slice.len(), dirprefixlen)];
551 if destlen + (slice.len() + if first { 0 } else { 1 })
549 if destlen + (slice.len() + if first { 0 } else { 1 })
552 > maxshortdirslen + 3
550 > maxshortdirslen + 3
@@ -649,9 +647,7 b' mod tests {'
649 use super::*;
647 use super::*;
650 use crate::utils::hg_path::HgPathBuf;
648 use crate::utils::hg_path::HgPathBuf;
651
649
652 // expected failure
653 #[test]
650 #[test]
654 #[should_panic]
655 fn test_long_filename_at_root() {
651 fn test_long_filename_at_root() {
656 let input = b"data/ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ.i";
652 let input = b"data/ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ.i";
657 let expected = b"dh/abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij.i708243a2237a7afae259ea3545a72a2ef11c247b.i";
653 let expected = b"dh/abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij.i708243a2237a7afae259ea3545a72a2ef11c247b.i";
General Comments 0
You need to be logged in to leave comments. Login now