From 027388029f3a2b9e15b5552fce4cc01ea308feab Mon Sep 17 00:00:00 2001 From: jmoenig Date: Thu, 10 Oct 2013 11:09:29 +0200 Subject: "sanity check" for cloud-saving mechanism errors if the serialized project data is corrupt and cannot be parsed as XML, addresses #203, #200, #171. I'm hoping that this might provide us a clue whether the corruption is happening in Snap's marshalling or on the backend side --- cloud.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'cloud.js') diff --git a/cloud.js b/cloud.js index 480c4f9..9857c67 100644 --- a/cloud.js +++ b/cloud.js @@ -29,7 +29,7 @@ /*global modules, IDE_Morph, SnapSerializer, hex_sha512, alert, nop*/ -modules.cloud = '2013-September-17'; +modules.cloud = '2013-October-10'; // Global stuff @@ -356,6 +356,24 @@ Cloud.prototype.saveProject = function (ide, callBack, errorCall) { ide.serializer.isCollectingMedia = false; ide.serializer.flushMedia(); + // check if serialized data can be parsed back again + try { + ide.serializer.parse(pdata); + } catch (err) { + ide.showMessage('Serialization of program data failed:\n' + err); + throw new Error('Serialization of program data failed:\n' + err); + } + if (media !== null) { + try { + ide.serializer.parse(media); + } catch (err) { + ide.showMessage('Serialization of media failed:\n' + err); + throw new Error('Serialization of media failed:\n' + err); + } + } + ide.serializer.isCollectingMedia = false; + ide.serializer.flushMedia(); + myself.reconnect( function () { myself.callService( -- cgit v1.3.1