@@ -271,15 +271,11 @@ -(BOOL)attributeName:(const char*)nameStart length:(int)nameLen value:(const cha
271271return YES ;
272272}
273273if ( highBit ) {
274- int i;
275- for (i=0 ;i< valueLen;i++ ) {
276- if ( valueStart[i] & 128 ) {
277- value = (id )CFStringCreateWithBytes (NULL , (unsigned char *)valueStart, valueLen, (CFStringEncoding)cfDataEncoding, NO );
278- valueToRelease=value;
279- break ;
280- }
281- }
274+ valueToRelease=createNSStringIfAnyHighBitSet (valueStart, valueLen,cfDataEncoding);
282275}
276+ if ( valueToRelease) {
277+ value=valueToRelease;
278+ }
283279if ( !value ) {
284280value = MAKEDATA ( valueStart, valueLen );
285281}
@@ -966,6 +962,17 @@ -(void)clearAttributes
966962[self _setAttributes: nil ];
967963}
968964
965+ static inline NSString * createNSStringIfAnyHighBitSet ( const char *start, long len, long cfDataEncoding ) {
966+ for (int i=0 ;i< len;i++ ) {
967+ if ( start[i] & 128 ) {
968+ return (id )CFStringCreateWithBytes (NULL , (const unsigned char *)start, len, (CFStringEncoding)cfDataEncoding, NO );
969+ // if (!str ) { return YES; }
970+ break ;
971+ }
972+ }
973+ return nil ;
974+ }
975+
969976-(BOOL )makeText : (const char *)start length : (long )len firstEntityOffset : (long )entityOffset
970977{
971978id stringToRelease=nil ;
@@ -976,19 +983,13 @@ -(BOOL)makeText:(const char*)start length:(long)len firstEntityOffset:(long)enti
976983
977984}
978985 if ( CHARACTERDATAALLOWED ) {
979- int i;
980- // NSLog(@"allowing characters, tagStackLen: %d and sending to %@",tagStackLen,characterHandler);
981- if ( autotranslateUTF8 ) {
982- for (i=0 ;i< len;i++ ) {
983- if ( start[i] & 128 ) {
984- str = (id )CFStringCreateWithBytes (NULL , (const unsigned char *)start, len, (CFStringEncoding)cfDataEncoding, NO );
985- stringToRelease=str;
986- // if (!str ) { return YES; }
987- break ;
988- }
989- }
986+ // NSLog(@"allowing characters, tagStackLen: %d and sending to %@",tagStackLen,characterHandler);
987+ if ( autotranslateUTF8 ) {
988+ stringToRelease=createNSStringIfAnyHighBitSet (start, len,cfDataEncoding);
990989}
991- if ( !str ) {
990+ if ( stringToRelease) {
991+ str = stringToRelease;
992+ } else {
992993str= MAKEDATA ( start, len );
993994}
994995if ( str ) {
0 commit comments