Refactor: Rewrite convert_smilies to avoid catastrophic runtime performance. #6762
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Todo
$wpsmiliestrans
- it currently assumes that filtering of that list only occurs once at bootup, but some code directly modifies theglobal
.wp_find_whitespace_span()
into separate patch?Summary
In some cases, the search for smilies to replace can introduce catastrophic backtracking in the PCRE pattern built to find them.
In this patch the function is rewritten using the HTML API and the
WP_Token_Map
, and all PCRE methods have been replaced with hand-written single-pass parsers where applicable.The new approach should avoid memory allocation and catastrophic runtimes and crashes.