Commit ba66e460 authored by csillag's avatar csillag

Import @edsu's fix for the jsChannel vs Prototype problem

Updated jsChannel to this version:
https://github.com/edsu/jschannel/tree/e9caa88ac9390385b57d263528f0869ae6a48ac9

Fixes #608.
parent 001fcaba
...@@ -233,6 +233,21 @@ ...@@ -233,6 +233,21 @@
if (!window.JSON || !window.JSON.stringify || ! window.JSON.parse) { if (!window.JSON || !window.JSON.stringify || ! window.JSON.parse) {
throw("jschannel cannot run this browser, no JSON parsing/serialization"); throw("jschannel cannot run this browser, no JSON parsing/serialization");
} }
if (window.Prototype) {
// Some versions of Prototype ship with a broken Array.toJSON
// which flattens arrays into strings! Since we have a working
// JSON.stringify we can safely remove it.
// See: http://stackoverflow.com/questions/710586/json-stringify-bizarreness
console.log("patching Prototype's faulty Array.toJSON")
var stringify = window.JSON.stringify;
window.JSON.stringify = function(value) {
var _array_tojson = Array.prototype.toJSON;
delete Array.prototype.toJSON;
var r = stringify(value);
Array.prototype.toJSON = _array_tojson;
return r;
}
}
/* basic argument validation */ /* basic argument validation */
if (typeof cfg != 'object') throw("Channel build invoked without a proper object argument"); if (typeof cfg != 'object') throw("Channel build invoked without a proper object argument");
...@@ -544,8 +559,14 @@ ...@@ -544,8 +559,14 @@
// object and pick out all of the functions that were passed as arguments. // object and pick out all of the functions that were passed as arguments.
var callbacks = { }; var callbacks = { };
var callbackNames = [ ]; var callbackNames = [ ];
var seen = [ ];
var pruneFunctions = function (path, obj) { var pruneFunctions = function (path, obj) {
if (seen.indexOf(obj) >= 0) {
throw "params cannot be a recursive data structure"
}
seen.push(obj);
if (typeof obj === 'object') { if (typeof obj === 'object') {
for (var k in obj) { for (var k in obj) {
if (!obj.hasOwnProperty(k)) continue; if (!obj.hasOwnProperty(k)) continue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment