diff options
author | Alexander Tkachev | 2016-05-30 22:18:33 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | 001b417f33beeb3b2da11f58105b971dc7e6f600 (patch) | |
tree | 25d651f462b2132ca1ffe9a84df76bbd3349d244 /backends/cloud/onedrive/onedrivetokenrefresher.cpp | |
parent | af37ecca3430c871ec8a03bcada90303e6bf9877 (diff) | |
download | scummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.tar.gz scummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.tar.bz2 scummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.zip |
CLOUD: Fix OneDriveTokenRefresher
It was calling finish(), causing stack overflow.
Some minor changes are added also.
Diffstat (limited to 'backends/cloud/onedrive/onedrivetokenrefresher.cpp')
-rw-r--r-- | backends/cloud/onedrive/onedrivetokenrefresher.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/backends/cloud/onedrive/onedrivetokenrefresher.cpp b/backends/cloud/onedrive/onedrivetokenrefresher.cpp index d932f9ab17..a0c41ff471 100644 --- a/backends/cloud/onedrive/onedrivetokenrefresher.cpp +++ b/backends/cloud/onedrive/onedrivetokenrefresher.cpp @@ -60,7 +60,7 @@ void OneDriveTokenRefresher::finishJson(Common::JSONValue *json) { if (!json) { //notify user of failure warning("OneDriveTokenRefresher: got NULL instead of JSON"); - CurlJsonRequest::finish(); + CurlJsonRequest::finishJson(nullptr); return; } @@ -72,8 +72,24 @@ void OneDriveTokenRefresher::finishJson(Common::JSONValue *json) { } Common::JSONObject error = result.getVal("error")->asObject(); - debug("code = %s", error.getVal("code")->asString().c_str()); - debug("message = %s", error.getVal("message")->asString().c_str()); + bool irrecoverable = true; + + if (error.contains("code")) { + Common::String code = error.getVal("code")->asString(); + debug("code = %s", code.c_str()); + //if (code == "itemNotFound") irrecoverable = true; + } + + if (error.contains("message")) { + Common::String message = error.getVal("message")->asString(); + debug("message = %s", message.c_str()); + } + + if (irrecoverable) { + CurlJsonRequest::finishJson(nullptr); + return; + } + pause(); delete json; _parentStorage->getAccessToken(new Common::Callback<OneDriveTokenRefresher, Storage::BoolResponse>(this, &OneDriveTokenRefresher::tokenRefreshed)); |