From b87c78474d3a10d59222487dbef1ea672de25bfb Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 19 Jul 2025 14:49:02 +1200 Subject: [PATCH] Fix for diff patching using encodeURI --- client/homebrew/pages/editPage/editPage.jsx | 2 +- server/homebrew.api.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index b2c21a157..29dad9de0 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -266,7 +266,7 @@ const EditPage = createClass({ brew.text = brew.text.normalize('NFC'); this.savedBrew.text = this.savedBrew.text.normalize('NFC'); brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1; - brew.patches = stringifyPatches(makePatches(this.savedBrew.text, brew.text)); + brew.patches = stringifyPatches(makePatches(encodeURI(this.savedBrew.text), encodeURI(brew.text))); brew.hash = await md5(this.savedBrew.text); //brew.text = undefined; - Temporary parallel path brew.textBin = undefined; diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 82d64c1a3..e6582d363 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -375,7 +375,7 @@ const api = { try { const patches = parsePatch(brewFromClient.patches); // Patch to a throwaway variable while parallelizing - we're more concerned with error/no error. - const patchedResult = applyPatches(patches, brewFromServer.text, { allowExceedingIndices: true })[0]; + const patchedResult = decodeURI(applyPatches(patches, encodeURI(brewFromServer.text))[0]); if(patchedResult != brewFromClient.text) throw("Patches did not apply cleanly, text mismatch detected"); // brew.text = applyPatches(patches, brewFromServer.text)[0];