src/jdk/nashorn/internal/objects/NativeError.java

Print this page

        

@@ -325,11 +325,16 @@
         }
 
         final Object exception = ECMAException.getException(sobj);
         if (exception instanceof Throwable) {
             Object value = getScriptStackString(sobj, (Throwable)exception);
+            if (sobj.hasOwnProperty(STACK)) {
             sobj.put(STACK, value, false);
+            } else {
+                sobj.addOwnProperty(STACK, Attribute.NOT_ENUMERABLE, value);
+            }
+
             return value;
         }
 
         return UNDEFINED;
     }

@@ -344,11 +349,16 @@
      * @return value that was set
      */
     public static Object setStack(final Object self, final Object value) {
         Global.checkObject(self);
         final ScriptObject sobj = (ScriptObject)self;
-        sobj.set(STACK, value, false);
+        if (sobj.hasOwnProperty(STACK)) {
+            sobj.put(STACK, value, false);
+        } else {
+            sobj.addOwnProperty(STACK, Attribute.NOT_ENUMERABLE, value);
+        }
+
         return value;
     }
 
     /**
      * ECMA 15.11.4.4 Error.prototype.toString ( )