If we have passed condition on line 693, we know that raw[emailE - 1] is '>'. raw[emailE] may be LF, so nextLF(raw, emailE) will go too far (to the next LF).

Regarding the suggested loop, the code doesn't look simpler to me than what the patch contains now, on the other hand it's not as tolerant regarding "junk" after the author email. I've added another test case to RawParseUtils_ParsePersonIdentTest.testParsePersonIdent_fuzzyCases() illustrating a possible problem.