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 lastobelus@mac.com