shithub: libmujs

Download patch

ref: 6f93cab7ffcb73d64d45ecc746f121c37c73586d
parent: e082e6e61c251b9dd4b3c58e58bd63b4122cbb85
author: Tor Andersson <tor.andersson@artifex.com>
date: Thu Jan 23 06:54:11 EST 2020

Fix enumerability of Error and Function properties.

The Error.message, Error.stackTrace, Function.prototype properties were
defined with the wrong attributes.

x

--- a/jserror.c
+++ b/jserror.c
@@ -61,10 +61,10 @@
 	js_pushobject(J, jsV_newobject(J, JS_CERROR, prototype));
 	if (top > 1) {
 		js_pushstring(J, js_tostring(J, 1));
-		js_setproperty(J, -2, "message");
+		js_defproperty(J, -2, "message", JS_DONTENUM);
 	}
 	if (jsB_stacktrace(J, 1))
-		js_setproperty(J, -2, "stackTrace");
+		js_defproperty(J, -2, "stackTrace", JS_DONTENUM);
 	return 1;
 }
 
--- a/jsvalue.c
+++ b/jsvalue.c
@@ -417,7 +417,7 @@
 			js_copy(J, -2);
 			js_defproperty(J, -2, "constructor", JS_DONTENUM);
 		}
-		js_defproperty(J, -2, "prototype", JS_DONTCONF);
+		js_defproperty(J, -2, "prototype", JS_DONTENUM | JS_DONTCONF);
 	}
 }
 
@@ -445,7 +445,7 @@
 			js_copy(J, -2);
 			js_defproperty(J, -2, "constructor", JS_DONTENUM);
 		}
-		js_defproperty(J, -2, "prototype", JS_DONTCONF);
+		js_defproperty(J, -2, "prototype", JS_DONTENUM | JS_DONTCONF);
 	}
 }
 
@@ -464,7 +464,7 @@
 		js_rot2(J); /* obj proto */
 		js_copy(J, -2); /* obj proto obj */
 		js_defproperty(J, -2, "constructor", JS_DONTENUM);
-		js_defproperty(J, -2, "prototype", JS_READONLY | JS_DONTENUM | JS_DONTCONF);
+		js_defproperty(J, -2, "prototype", JS_DONTENUM | JS_DONTCONF);
 	}
 }