Looking into this.
The simplest way to fix it I can think of is to...preparse it twice...
// Too long?
if (!empty($sig_limits[1]) && $smcFunc['strlen']($unparsed_signature) > $sig_limits[1])
{
$_POST['signature'] = trim(htmlspecialchars($smcFunc['substr']($unparsed_signature, 0, $sig_limits[1]), ENT_QUOTES));
// Lenght is something particular...unfortunately...
$unparsed_signature_length = $unparsed_signature;
preparsecode($unparsed_signature_length);
$unparsed_signature_length = str_replace('<br />', "\n", $unparsed_signature_length);
// Too long?
if (!empty($sig_limits[1]) && $smcFunc['strlen']($unparsed_signature_length) > $sig_limits[1])
{
$_POST['signature'] = trim(htmlspecialchars($smcFunc['substr']($unparsed_signature_length, 0, $sig_limits[1]), ENT_QUOTES));
I'm wondering if it is worth.
Opinions?