Quando uma postagem contém uma imagem com um sublinhado no nome do arquivo (por exemplo, ), cada salvamento da postagem duplica as barras invertidas antes do sublinhado no conteúdo bruto:
- Após a 1ª edição: ![20260421_140231|…]
- Após a 2ª edição: ![20260421\_140231|…]
- Após a Nª edição: ![20260421{2^N}_140231|…]
Após 17 edições, o campo bruto acumulou 131.072 caracteres de barra invertida (2^17), crescendo de ~8KB para ~136KB. Isso acaba fazendo com que a postagem se torne impossível de editar — o editor relata uma contagem de caracteres muito superior ao max_post_length, mesmo que o conteúdo visível seja pequeno.
Passos para reproduzir:
- Faça upload de uma imagem cujo nome de arquivo contenha um sublinhado.
- Insira-a em uma postagem. O Discourse gera texto alternativo como 20260421_140231.
- Edite e salve a postagem repetidamente (5 a 10 vezes são suficientes para notar o crescimento).
- Inspeccione o conteúdo bruto via /posts/{id}.json — a contagem de barras invertidas dobra a cada salvamento.
Comportamento esperado: O conteúdo bruto deve permanecer estável entre edições. Sublinhados no texto alternativo de imagens não devem ser reescapados a cada salvamento.
Comportamento real: Cada salvamento multiplica por 2 as barras invertidas antes de _ no texto alternativo de imagens.
Solução alternativa: Execute o seguinte no console do Rails para remover as barras invertidas extras e reprocessar:
p = Post.find(POST_ID)
p.update_column(:raw, p.raw.gsub(/\+(?=_)/, “”))
p.rebake!
Ambiente:
- Versão do Discourse: 2026.4.0-latest
- Instalado via configuração oficial do Docker ./launcher