Laurent Sansonetti
lsans****@apple*****
Thu May 24 06:04:12 JST 2007
Should be fixed in r1771. Laurent On May 23, 2007, at 6:54 PM, Laurent Sansonetti wrote: > Forgot what I said, I can reproduce it. > > Investigating now :-) > > Laurent > > On May 23, 2007, at 6:44 PM, Laurent Sansonetti wrote: > >> Hi Satoshi-san, >> >> I have problems reproducing the defect. >> >> Here is the code I used: >> >> <<< >> require 'osx/cocoa' >> >> OSX.require_framework 'WebKit' >> >> include OSX >> >> 3000.times do |i| >> obj = NSObject.alloc.init >> if obj.class.name != 'OSX::NSObject' >> puts "Not NSObject at: #{i}" >> p obj >> return >> end >> view = WebView.alloc.initWithFrame(NSZeroRect) >> view.setPolicyDelegate(self) >> view.mainFrame.loadHTMLString_baseURL('<html></html>', nil) >> end >> puts 'No problem' >>>>> >> >> It always prints "No problem" on 2 different environments (ppc and >> i386). I also tried to increase 3000 by a bigger number, without >> success. >> >> # I also try your AllocDefect projet, without success too :( >> >> Laurent >> >> On May 23, 2007, at 7:43 AM, Satoshi Nakagawa wrote: >> >>> Hi. >>> >>> I'm writing an application using WebKit. In the process I found a >>> defect of RubyCocoa. >>> >>> The defect is that NSObject.alloc.init doesn't return NSObject >>> sometimes. It is reproducible only when setting a ruby object for >>> WebPolicyDelegate or WebUIDelegate. If I set an Objective-C object >>> for WebPolicyDelegate, it works normally. >>> >>> In the following code, NSObject.alloc.init return >>> OSX::WebPolicyDecisionListener or OSX::NSMutableURLRequest >>> sometimes. >>> >>> Environment: OSX 10.4 + ruby 1.8.2 >>> Reproducible versions: 0.10.1, 0.11.0 >>> NOT reproducible version: 0.5.0 >>> >>> -------- Reproduce code >>> class AppController < OSX::NSObject >>> include OSX >>> >>> def >>> webView_decidePolicyForNavigationAction_request_frame_decisionListener >>> (sender, action, request, frame, listener) >>> listener.use >>> end >>> >>> def awakeFromNib >>> puts '@@@ awakeFromNib' >>> 3000.times do |i| >>> obj = NSObject.alloc.init >>> if obj.class.name != 'OSX::NSObject' >>> puts "Not NSObject at: #{i}" >>> p obj >>> return >>> end >>> view = WebView.alloc.initWithFrame(NSZeroRect) >>> view.setPolicyDelegate(self) >>> view.mainFrame.loadHTMLString_baseURL('<html></html>', nil) >>> end >>> puts 'No problem' >>> end >>> end >>> -------- >>> >>> -------- Result 1 >>> @@@ awakeFromNib >>> Not NSObject at: 104 >>> #<OSX::WebPolicyDecisionListener:0x159ed6 class='NSObject' >>> id=0x500e20> >>> -------- >>> >>> -------- Result 2 >>> @@@ awakeFromNib >>> Not NSObject at: 186 >>> #<OSX::NSMutableURLRequest:0x80d6f8 class='NSObject' id=0xd60bf60> >>> -------- >>> >>> The entire project contains the reproduce code: >>> http://limechat.net/rubycocoa/AllocRuby.zip >>> >>> And another project using Objective-C delegate object (it works >>> normally): >>> http://limechat.net/rubycocoa/AllocObjc.zip >>> >>> -- >>> Satoshi Nakagawa >>> http://limechat.net/ >>> http://www.lingr.com/ >>> >>> _______________________________________________ >>> Rubycocoa-devel mailing list >>> Rubyc****@lists***** >>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel >> >> _______________________________________________ >> Rubycocoa-devel mailing list >> Rubyc****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > > _______________________________________________ > Rubycocoa-devel mailing list > Rubyc****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel