Bug 9417
Summary: | Inappropriate +initialize method added to NSPasteboard via category | ||
---|---|---|---|
Product: | WebKit | Reporter: | Jim Correia <jim.correia> |
Component: | WebKit Misc. | Assignee: | Darin Adler <darin> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | darin |
Priority: | P2 | Keywords: | EasyFix, InRadar |
Version: | 420+ | ||
Hardware: | Mac | ||
OS: | OS X 10.4 |
Jim Correia
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
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
David Kilzer (:ddkilzer)
(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.
Jim Correia
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.
David Kilzer (:ddkilzer)
(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. :)
Darin Adler
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.
Jim Correia
This issue is more urgent than when I originally reported it. Additional details appended to <rdar://problem/4582212> since they are subject to NDA.
Darin Adler
Thanks! I'll take a look at this.
mitz
Fixed by Darin in <http://trac.webkit.org/projects/webkit/changeset/25312>.