If I run default_case_fold_str on a string containing the ligature ffi, it appears to cause an infinite loop that consumes all RAM.
Here's a test case that encounters the infinite loop:
#[test]
fn test_ligature() {
let s = "the spiffiest test";
assert_eq!(default_case_fold_str(&s), "the spiffiest test");
}
(In case font rendering is obscuring the problem, the input word "spiffiest" is made of 7 characters: ['s', 'p', 'i', 'ffi', 'e', 's', 't'].)