mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-06 02:10:28 +00:00

If user doesn't have a "saves" folder, listing it as a first step of syncing save files would result in 404 from OneDrive. OneDriveTokenRefresher handles token-related errors (401), so when it meets 404, it calls its finishError method. But because there was some strange behaviour from OneDrive with sending invalid JSON, this method tries fixing JSON and parsing it again. If it is valid, it calls non-error method again, and in result we get stack overflow. In order to fix that, I've added a non-JSON prefix "<irrecoverable>", so finishError won't be able to parse JSON and thus won't call finishJson again. Saves syncing callback does check string contents apart from trying to parse JSON, so it still works and correctly handles the situation when "saves" directory is missing. But, if needed, code can be updated to search for the prefix I've added and remove it before parsing original JSON.