I'm having trouble with the NSString method getLineStart:end:contentsEnd:forRange:. The range param at the end gets mangled.

First of all, the ordinary syntax can't be used because "end" is a keyword, so I'm using the hash syntax.

I added cover methods to NSString to see what was happening. I made two cover methods, one with the same signature as getLineStart:end:contentsEnd:forRange: and one with the range param first:

- (void)getLineStart2:(NSUInteger *)startIndex end:(NSUInteger *)lineEndIndex contentsEnd:(NSUInteger *)contentsEndIndex forRange: (NSRange)aRange
{
NSLog( @"getLineStartForRange startIndex: %d lineEndIndex: %d contentsEndIndex: %d range: %@", *startIndex, *lineEndIndex, *contentsEndIndex, NSStringFromRange(aRange)); [self getLineStart: startIndex end: lineEndIndex contentsEnd: contentsEndIndex forRange: aRange];
}

- (void)getLineStart3:(NSRange)aRange end:(NSUInteger *)lineEndIndex contentsEnd:(NSUInteger *)contentsEndIndex forIndex:(NSUInteger *)startIndex
{
NSLog( @"getLineStartForRange startIndex: %d lineEndIndex: %d contentsEndIndex: %d range: %@", *startIndex, *lineEndIndex, *contentsEndIndex, NSStringFromRange(aRange)); [self getLineStart: startIndex end: lineEndIndex contentsEnd: contentsEndIndex forRange: aRange];
}

When calling them, getLineStart3 with the range param as the first param works fine, but getLineStart2 mangles the range:


    endix = Pointer.new(:ulong_long)
    conix = Pointer.new(:ulong_long)
    ix = Pointer.new(:ulong_long)
    ix[0] = 5
    conix[0] = 6
    endix[0] = 7

    puts "selectedRange: #{selectedRange.inspect}"
@diagramCode.getLineStart3(selectedRange, :end => endix, :contentsEnd => conix, :forIndex => ix)
    puts "try old way"
    ix[0] = 5
    conix[0] = 6
    endix[0] = 7
@diagramCode.getLineStart2(ix, :end => endix, :contentsEnd => conix, :forRange => selectedRange)
    puts "ix: #{ix} endix: #{endix.inspect} conix: #{conix.inspect}"


selectedRange: #<NSRange location=3 length=0>
2009-12-09 14:22:11.487 seeqr[11372:10b] getLineStart3 startIndex: 5 lineEndIndex: 7 contentsEndIndex: 6 range: {3, 0}
try old way
2009-12-09 14:22:11.489 seeqr[11372:10b] getLineStart2 startIndex: 5 lineEndIndex: 7 contentsEndIndex: 6 range: {0, 4294995796} 2009-12-09 14:22:11.490 seeqr[11372:10b] *** -[NSBigMutableString _getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:]: Range or index out of bounds


Am I missing something obvious?

Thanks,

Michael Johnston
[email protected]




_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to