From b7e529dd490c493a726878df0c712670fbd3fa3f Mon Sep 17 00:00:00 2001 From: smizrahi Date: Mon, 31 Jul 2023 10:41:11 +0200 Subject: [PATCH] fix(mail): When signature is too big and changing identity, a 'regex too big' error occurs. In this case just add signature at the end. Fixes #5695. --- .../js/Mailer/MessageEditorController.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/UI/WebServerResources/js/Mailer/MessageEditorController.js b/UI/WebServerResources/js/Mailer/MessageEditorController.js index 253b0d689..4d9e5d2ac 100644 --- a/UI/WebServerResources/js/Mailer/MessageEditorController.js +++ b/UI/WebServerResources/js/Mailer/MessageEditorController.js @@ -411,16 +411,24 @@ signature = nl.repeat(nlNb) + '--' + space + nl + identity.signature; else signature = ''; - + previousIdentity = _.find(this.identities, function (currentIdentity, index) { if (currentIdentity.signature) { - var currentSignature = new RegExp('(' + reNl + '){' + nlNb + '}--' + space + reNl + - currentIdentity.signature.replace(/[-\[\]{}()*+?.,\\^$|#\s]/g, '\\$&')); - if (vm.message.editable.text.search(currentSignature) >= 0) { - vm.message.editable.text = vm.message.editable.text.replace(currentSignature, signature); + try { + var currentSignature = new RegExp('(' + reNl + '){' + nlNb + '}--' + space + reNl + + currentIdentity.signature.replace(/[-\[\]{}()*+?.,\\^$|#\s]/g, '\\$&')); + if (vm.message.editable.text.search(currentSignature) >= 0) { + vm.message.editable.text = vm.message.editable.text.replace(currentSignature, signature); + return true; + } + } catch (error) { + // An error can occur (regex too long) when the signature is too big (using images) + // In this case, just add the signature at the end (#5695) + vm.message.editable.text += signature; return true; } + } return false; });