Opened 11 years ago

Closed 11 years ago

#361 closed defect (fixed)

Loading WebKit example fails

Reported by: gb Owned by: 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 (2)

comment:1 Changed 11 years ago 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.

comment:2 Changed 11 years ago by gb

  • Resolution set to fixed
  • Status changed from assigned to closed

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.

Note: See TracTickets for help on using tickets.