Ticket #361 (closed defect: fixed)

Opened 3 months ago

Last modified 1 week ago

Loading WebKit example fails

Reported by: gb Assigned to: gb
Priority: major Milestone:
Component: Runtime (threads, GC) Version:
Keywords: ObjC bridge Cc:

Description

Just trying to load the webkit framework via:

(eval-when (:compile-toplevel :load-toplevel :execute)
  (objc:load-framework "WebKit" :webkit))

fails with an error from something in the bridge that seems not to know that method signatures of different lengths aren't EQUAL and that it should stop CDRing:

? 
> Error: Unknown foreign type: NIL
> While executing: %PARSE-FOREIGN-TYPE, in process Listener(3).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
1 > :b
 (13536820) : 0 (%PARSE-FOREIGN-TYPE NIL #S(FOREIGN-TYPE-DATA :TRANSLATORS #<HASH-TABLE :TEST EQ size 17/60 #x300040B2F80D> :KIND-INFO #<HASH-TABLE :TEST EQ size 164/203 #x300040B2F21D> ...)) 733
 (13536868) : 1 (PARSE-FOREIGN-TYPE NIL #S(FOREIGN-TYPE-DATA :TRANSLATORS #<HASH-TABLE :TEST EQ size 17/60 #x300040B2F80D> :KIND-INFO #<HASH-TABLE :TEST EQ size 164/203 #x300040B2F21D> ...)) 253
 (135368B0) : 2 (FUNCALL #'#<(:INTERNAL SIGNATURES-EQUAL POSTPROCESS-OBJC-MESSAGE-INFO)> (:VOID :ID) (:VOID)) 157
 (135368F8) : 3 (MEMBER-TEST (:VOID :ID) ((:<BOOL>) (:VOID)) #<Compiled-function (:INTERNAL SIGNATURES-EQUAL POSTPROCESS-OBJC-MESSAGE-INFO) (Non-Global)  #x300040EC781F>) 573
 (13536930) : 4 (ADJOIN (:VOID :ID) ((:<BOOL>) (:VOID)) :TEST #<Compiled-function (:INTERNAL SIGNATURES-EQUAL POSTPROCESS-OBJC-MESSAGE-INFO) (Non-Global)  #x300040EC781F> :TEST-NOT NIL :KEY NIL) 501
 (135369B8) : 5 (POSTPROCESS-OBJC-MESSAGE-INFO #S(OBJC-MESSAGE-INFO :MESSAGE-NAME "goForward" :METHODS (#<# -[# #] #x3000422BC61D> #<# -[# #] #x3000422BC6CD> #<# -[# #] #x300041EB79CD>) ...)) 797

Change History

10/23/08 16:54:59 changed by gb

  • status changed from new to assigned.

It's unrelated to the problem - there may be other cases where ObjC methods on the same method can take different numbers of arguments, like when one takes varargs and the other doesn't - but part of the problem here is that our inspector defines a method named "goForward" (not "goForward:") that takes an argument, while WebKit defines a couple of 0-arg "goForward" methods.

We should fix the bridge, but should also change the inspector method and its callers.

12/29/08 16:58:38 changed by gb

  • status changed from assigned to closed.
  • resolution set to fixed.

This (the signature comparison bug) was fixed in the trunk in r11216); the inspector method names were changed in the trunk in r11215. Neither of those changes made it into the 1.2 tree.

As of r11561, both changes should be in 1.2.