Bug 9417 - Inappropriate +initialize method added to NSPasteboard via category
: Inappropriate +initialize method added to NSPasteboard via category
Status: RESOLVED FIXED
: WebKit
WebKit Misc.
: 420+
: Macintosh Mac OS X 10.4
: P2 Normal
Assigned To:
:
: EasyFix, InRadar
:
:
  Show dependency treegraph
 
Reported: 2006-06-12 09:34 PST by
Modified: 2007-08-29 23:57 PST (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2006-06-12 09:34:22 PST
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
------- Comment #1 From 2006-06-12 10:02:32 PST -------
(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.
------- Comment #2 From 2006-06-12 10:08:40 PST -------
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.
------- Comment #3 From 2006-06-12 10:59:49 PST -------
(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.  :)
------- Comment #4 From 2006-06-12 11:05:55 PST -------
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.
------- Comment #5 From 2007-08-29 14:09:43 PST -------
This issue is more urgent than when I originally reported it. Additional details appended to <rdar://problem/4582212> since they are subject to NDA.
------- Comment #6 From 2007-08-29 14:28:12 PST -------
Thanks! I'll take a look at this.
------- Comment #7 From 2007-08-29 23:57:04 PST -------
Fixed by Darin in <http://trac.webkit.org/projects/webkit/changeset/25312>.