Mercurial > dwindows
diff mac/dw.m @ 992:2d80b4dcff9a
A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 07 May 2011 19:39:45 +0000 |
parents | 6de00477d627 |
children | a943f973c3ff |
line wrap: on
line diff
--- a/mac/dw.m Sat May 07 19:12:58 2011 +0000 +++ b/mac/dw.m Sat May 07 19:39:45 2011 +0000 @@ -4234,7 +4234,12 @@ NSTextStorage *ts = [mle textStorage]; NSString *nstr = [NSString stringWithUTF8String:buffer]; NSMutableString *ms = [ts mutableString]; - [ms insertString:nstr atIndex:(startpoint+1)]; + NSUInteger length = [ms length]; + if(startpoint < 0) + startpoint = 0; + if(startpoint > length) + startpoint = (int)length; + [ms insertString:nstr atIndex:startpoint]; return (unsigned int)strlen(buffer) + startpoint; } @@ -4270,11 +4275,15 @@ NSMutableString *ms = [ts mutableString]; NSUInteger numberOfLines, index, stringLength = [ms length]; - for(index=0, numberOfLines=0; index < stringLength; numberOfLines++) - index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]); - - *bytes = stringLength; - *lines = numberOfLines; + if(bytes) + *bytes = stringLength; + if(lines) + { + for(index=0, numberOfLines=0; index < stringLength; numberOfLines++) + index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]); + + *lines = numberOfLines; + } } /* @@ -4290,7 +4299,14 @@ DWMLE *mle = [sv documentView]; NSTextStorage *ts = [mle textStorage]; NSMutableString *ms = [ts mutableString]; - [ms deleteCharactersInRange:NSMakeRange(startpoint+1, length)]; + NSUInteger mslength = [ms length]; + if(startpoint < 0) + startpoint = 0; + if(startpoint > mslength) + startpoint = (int)mslength; + if(startpoint + length > mslength) + length = (int)mslength - startpoint; + [ms deleteCharactersInRange:NSMakeRange(startpoint, length)]; } /*