From 6d74b684ecefe64894707f32a34899fcaf73c2ab Mon Sep 17 00:00:00 2001 From: Joe DF <3848219+joedf@users.noreply.github.com> Date: Sat, 17 Sep 2022 17:10:03 +0200 Subject: [PATCH] implement @iangilman 's fix --- src/openseadragon.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 32189538..685ef10f 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1101,8 +1101,13 @@ function OpenSeadragon( options ){ if ( options !== null || options !== undefined ) { // Extend the base object for ( name in options ) { - src = target[ name ]; - copy = Object.getOwnPropertyDescriptor(options, name).value; + var descriptor = Object.getOwnPropertyDescriptor(options, name); + if (descriptor.get || descriptor.set) { + Object.defineProperty(target, name, descriptor); + continue; + } + + copy = descriptor.value; // Prevent never-ending loop if ( target === copy ) { @@ -1111,6 +1116,8 @@ function OpenSeadragon( options ){ // Recurse if we're merging plain objects or arrays if ( deep && copy && ( OpenSeadragon.isPlainObject( copy ) || ( copyIsArray = OpenSeadragon.isArray( copy ) ) ) ) { + src = target[ name ]; + if ( copyIsArray ) { copyIsArray = false; clone = src && OpenSeadragon.isArray( src ) ? src : [];