summaryrefslogtreecommitdiff
path: root/cloud.js
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2013-10-10 11:09:29 +0200
committerjmoenig <jens@moenig.org>2013-10-10 11:09:29 +0200
commit027388029f3a2b9e15b5552fce4cc01ea308feab (patch)
tree98444333c80d9f254be5e481dc91b3f78d253f51 /cloud.js
parent24476a644e18b526f09dab730a09b88a6e501a5a (diff)
downloadsnap-yow-027388029f3a2b9e15b5552fce4cc01ea308feab.tar.gz
snap-yow-027388029f3a2b9e15b5552fce4cc01ea308feab.zip
"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
Diffstat (limited to 'cloud.js')
-rw-r--r--cloud.js20
1 files changed, 19 insertions, 1 deletions
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(