diff --git a/src/utils/utils.php b/src/utils/utils.php index 5e5f305..4854681 100644 --- a/src/utils/utils.php +++ b/src/utils/utils.php @@ -770,6 +770,19 @@ function phutil_split_lines($corpus, $retain_endings = true) { return array(''); } + $count = substr_count($corpus, "\n"); + $limit = 1024 * 1024; + if ($count > $limit) { + $ex = new Exception( + pht( + 'Huge input! Found %s lines, hoped for %s. Probably about to '. + 'OOM. Exciting! Corpus begins: %s...', + new PhutilNumber($count), + new Phutilnumber($limit), + tsprintf("%s", substr($corpus, 0, 256)))); + phlog($ex); + } + // Split on "\r\n" or "\n". if ($retain_endings) { $lines = preg_split('/(?<=\n)/', $corpus);