forked from forgejo/forgejo
Backport https://github.com/go-gitea/gitea/pull/25184 by @jtran
Closes #25225.
Fixes https://github.com/go-gitea/gitea/issues/25160.
`data-source-position` of checkboxes in a task list was incorrect
whenever there was YAML front matter. This would result in issue content
or PR descriptions getting corrupted with random `x` or space characters
when a user checked or unchecked a task.
(cherry picked from commit 1650a26eb5
)
This commit is contained in:
parent
38e5589bd6
commit
c34b605314
6 changed files with 66 additions and 7 deletions
|
@ -29,6 +29,14 @@ export function initMarkupTasklist() {
|
|||
|
||||
const encoder = new TextEncoder();
|
||||
const buffer = encoder.encode(oldContent);
|
||||
// Indexes may fall off the ends and return undefined.
|
||||
if (buffer[position - 1] !== '['.codePointAt(0) ||
|
||||
buffer[position] !== ' '.codePointAt(0) && buffer[position] !== 'x'.codePointAt(0) ||
|
||||
buffer[position + 1] !== ']'.codePointAt(0)) {
|
||||
// Position is probably wrong. Revert and don't allow change.
|
||||
checkbox.checked = !checkbox.checked;
|
||||
throw new Error(`Expected position to be space or x and surrounded by brackets, but it's not: position=${position}`);
|
||||
}
|
||||
buffer.set(encoder.encode(checkboxCharacter), position);
|
||||
const newContent = new TextDecoder().decode(buffer);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue