See attached (siimplified) testcase for example. Basically, Safari chokes when trying to assign a new inline function to a variable using "new Function()". The attached testcase creates a dummy object and then attempts to create a "proxy" object or copy of that object by assigning the prototype of the proxied object to the original object (its simpler than it sounds). The workaround is to make the assignment using "function() {}" instead. I.e., this does not work: var proxyCtor = new Function(); This does work: var proxyCtor = function() {}; Both cases work in IEv6 and FFv1.5 (both on win and Mac).
Created attachment 7243 [details] Testcase exposing bug in question Clicking on the link should alert "doit" twice. Safari only alerts once :(
Created attachment 16654 [details] Test ReadOnly attribute FIXED. The function instance was given a prototype property. with Function() and new Function(), this property was incorrectly flagged ReadOnly. This has been fixed in Webkit.
Both test cases work for me with a local debug build of Webkit r30458.