From 5f712645ede3ff2a95be56ae2b5868e8cf9b3150 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Thu, 27 Feb 2020 07:47:41 -0500 Subject: [PATCH] Merge pull request #2626 from overleaf/bg-fix-editor-regexps fix stateful regexp usage in editor inputs GitOrigin-RevId: 4950066251cb6235e218ff4f600fab2652d15e76 --- .../js/ide/editor/directives/aceEditor.js | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor.js b/services/web/frontend/js/ide/editor/directives/aceEditor.js index 347d7014a6..abe5153584 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor.js @@ -201,28 +201,24 @@ define([ // you can modify the input or reject the event with e.preventDefault() editor.commands.on('exec', function(e) { // replace bad characters in paste content - if ( - e.command && - e.command.name === 'paste' && - e.args && - BAD_CHARS_REGEXP.test(e.args.text) - ) { - e.args.text = e.args.text.replace( - BAD_CHARS_REGEXP, - BAD_CHARS_REPLACEMENT_CHAR - ) + if (e.command && e.command.name === 'paste') { + BAD_CHARS_REGEXP.lastIndex = 0 // reset stateful regexp for this usage + if (e.args && BAD_CHARS_REGEXP.test(e.args.text)) { + e.args.text = e.args.text.replace( + BAD_CHARS_REGEXP, + BAD_CHARS_REPLACEMENT_CHAR + ) + } } // replace bad characters in keyboard input - if ( - e.command && - e.command.name === 'insertstring' && - e.args && - BAD_CHARS_REGEXP.test(e.args) - ) { - e.args = e.args.replace( - BAD_CHARS_REGEXP, - BAD_CHARS_REPLACEMENT_CHAR - ) + if (e.command && e.command.name === 'insertstring') { + BAD_CHARS_REGEXP.lastIndex = 0 // reset stateful regexp for this usage + if (e.args && BAD_CHARS_REGEXP.test(e.args)) { + e.args = e.args.replace( + BAD_CHARS_REGEXP, + BAD_CHARS_REPLACEMENT_CHAR + ) + } } })