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

Print this page

        

@@ -314,11 +314,16 @@
         }
 
         final Object exception = ECMAException.getException(sobj);
         if (exception instanceof Throwable) {
             final 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;
     }

@@ -332,11 +337,15 @@
      *
      * @return value that was set
      */
     public static Object setStack(final Object self, final Object value) {
         final ScriptObject sobj = Global.checkObject(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 ( )