Summary: | (V8) Invalid member function pointer hashing in SVG bindings. | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Dean McNamee <deanm> | ||||
Component: | DOM | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | darin, dglazkov | ||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | PC | ||||||
OS: | OS X 10.5 | ||||||
Attachments: |
|
Description
Dean McNamee
2009-07-30 11:26:21 PDT
Created attachment 33794 [details]
Patch
(In reply to comment #0) > There is some code to create and reuse SVG wrappers in the binding code. > Previously it hashed a struct with 1 pointer and 2 member function pointers. > The problem is member function pointers are opaque, and at least on MSVC cannot > be hashed reliably (and it doesn't make sense to try to read the opaque bytes). > > See http://www.codeproject.com/KB/cpp/FastDelegate.aspx for more details on the > implementations. > > There are a few options, all of them involve not trying to hash the member > function pointer. One would be to remove member function pointers all together > and create thunk wrappers. Another option would be to use something like a > std::map, since the compiler should implement operator<, etc correctly. (It was just pointed out to me that the compiler only gives you == and != for member function pointers, so std::map is not a possible solution). > > The option I took was to add some more hashing material during the binding > generation, so we can hash the pointer and a generated field hash together. It > would probably be best to remove the use of member function pointers all > together but that is a much bigger task. Comment on attachment 33794 [details]
Patch
r=me.
Landed as http://trac.webkit.org/changeset/46596. |