As of r14819 (*) of the WebKit source, there is code in WebNSPasteBoardExtras.m which looks like this: (*) The version of WebKit shipping on 10.4.6 does something similar. @implementation NSPasteboard (WebExtras) + (void)initialize { [...] } Unlike +load (which is sent to every category), +initialize is only sent once per class, thus the category implementation is going to override the NSPasteboard implementation. NSPasteboard today doesn't have an +initialize, but if it were to every get one, applications which linked against WebKit would have subtly wrong/different behavior. Some alternative means of initializing the category globals seems like a good idea. See also rdar://problem/4582212
(In reply to comment #0) > As of r14819 (*) of the WebKit source, there is code in WebNSPasteBoardExtras.m > which looks like this: Looking at 'svn annotate' on WebKit/Misc/WebNSPasteBoardExtras.m, this was added (or at least changed) back in r2185 (when WebKit was still in CVS at Apple) by a user named 'cblu'. This code is quite old.
I didn't mean for the "as of r14819" to imply that it was new code. Sorry if it has that affect. I just wanted to refer to a revision so if the code changed, the bug make still make sense in the context that I reported it.
(In reply to comment #2) > I didn't mean for the "as of r14819" to imply that it was new code. Sorry if it > has that affect. I just wanted to refer to a revision so if the code changed, > the bug make still make sense in the context that I reported it. I didn't mean this in a bad way...just doing some additional research for the bug. :)
We should move this initialization code into a helper function and call that function from any places that use WebURLPboardType or WebURLNamePboardType. Unfortunately, those two are exported in the header file, so we'll have to look all over WebKit to find those places.
This issue is more urgent than when I originally reported it. Additional details appended to <rdar://problem/4582212> since they are subject to NDA.
Thanks! I'll take a look at this.
Fixed by Darin in <http://trac.webkit.org/projects/webkit/changeset/25312>.