[MacRuby] #1029: Possible PDFKit bug

MacRuby ruby-noreply at macosforge.org
Mon Dec 6 15:40:12 PST 2010


#1029: Possible PDFKit bug
----------------------------------+-----------------------------------------
 Reporter:  yasuimao@…            |       Owner:  lsansonetti@…        
     Type:  defect                |      Status:  new                  
 Priority:  blocker               |   Milestone:                       
Component:  MacRuby               |    Keywords:                       
----------------------------------+-----------------------------------------
 I encountered an error using block with PDFDocument's
 findString:withOptions:

 Sample.rb

 {{{
 #!/usr/local/bin/macruby
 framework 'cocoa';framework 'Quartz'
 PDFDocument.alloc.initWithURL(NSURL.fileURLWithPath("sample.pdf")).findString("the",withOptions:NSCaseInsensitiveSearch).each{|x|
 p x.string}
 }}}

 'sample.pdf' is an academic journal PDF with about 12000 words in English.
 Along with this, I also tried .map{|x| x.string} instead of .each{} and
 got the same errors.

 The error messages I got are (multiple, all while processing the block):

 {{{
 => NSInvalidArgumentException: -[CPCharacterIndex count]: unrecognized
 selector sent to instance (RuntimeError Error)

 => NSRangeException: *** -[NSCFArray objectAtIndex:]: index (220) beyond
 bounds (2) (RuntimeError)

 => [CPZoneBorderIntersection count]: unrecognized selector sent to
 instance

 => Segmentation fault
 }}}


 As suggested by Laurent, I set GC_DISABLE = 1 when I run this script
 (though I'm not sure if I did it correctly).  Then this script ran without
 any problem.

 {{{
 $ GC_DISABLE=1 macruby sample.rb

 => expected result ("the"/"The")
 }}}


 Also, without using block, I got an array of PDFSelection objects without
 an error.

 {{{
 p
 PDFDocument.alloc.initWithURL(NSURL.fileURLWithPath("sample.pdf")).findString("the",withOptions:NSCaseInsensitiveSearch)

 => an array of "PDFSelection" objects
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/1029>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list