From cc3c57a0fa39b681d76a93488927151aaaa89f71 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Tue, 8 Sep 2015 11:47:27 -0400 Subject: [PATCH] webstaff: Protect the cloner from undefined values Signed-off-by: Mike Rylander Signed-off-by: Galen Charlton Signed-off-by: Jason Stephenson --- .../web/js/ui/default/staff/services/idl.js | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Open-ILS/web/js/ui/default/staff/services/idl.js b/Open-ILS/web/js/ui/default/staff/services/idl.js index 681a63a48a..fda58d3261 100644 --- a/Open-ILS/web/js/ui/default/staff/services/idl.js +++ b/Open-ILS/web/js/ui/default/staff/services/idl.js @@ -23,14 +23,18 @@ angular.module('egCoreMod') // Clones data structures containing fieldmapper objects service.Clone = function(old) { var obj; - if (old._isfieldmapper) { + if (typeof old == 'undefined') { + return old; + } else if (old._isfieldmapper) { obj = new service[old.classname]() for( var i in old.a ) { var thing = old.a[i]; if(thing === null) continue; - if( thing._isfieldmapper ) { + if (typeof thing == 'undefined') { + obj.a[i] = thing; + } else if (thing._isfieldmapper) { obj.a[i] = service.Clone(thing); } else { @@ -39,7 +43,9 @@ angular.module('egCoreMod') for( var j in thing ) { - if( thing[j]._isfieldmapper ) + if (typeof thing[j] == 'undefined') + obj.a[i][j] = thing[j]; + else if( thing[j]._isfieldmapper ) obj.a[i][j] = service.Clone(thing[j]); else obj.a[i][j] = angular.copy(thing[j]); @@ -53,7 +59,9 @@ angular.module('egCoreMod') if(angular.isArray(old)) { obj = []; for( var j in old ) { - if( old[j]._isfieldmapper ) + if (typeof old[j] == 'undefined') + obj[j] = old[j]; + else if( old[j]._isfieldmapper ) obj[j] = service.Clone(old[j]); else obj[j] = angular.copy(old[j]); @@ -61,7 +69,9 @@ angular.module('egCoreMod') } else if(angular.isObject(old)) { obj = {}; for( var j in old ) { - if( old[j]._isfieldmapper ) + if (typeof old[j] == 'undefined') + obj[j] = old[j]; + else if( old[j]._isfieldmapper ) obj[j] = service.Clone(old[j]); else obj[j] = angular.copy(old[j]); -- 2.43.2