Browse Source

Fixed some string issues.

Brucey 2 years ago
parent
commit
bc59c1c407
1 changed files with 4 additions and 3 deletions
  1. 4 3
      blitz.mod/blitz_string.c

+ 4 - 3
blitz.mod/blitz_string.c

@@ -326,17 +326,17 @@ BBString *bbStringFromUTF8Bytes( const unsigned char *p,int n ){
 		if( c<0x80 ){
 			*q++=c;
 		}else{
-			if (!n--) continue;
+			if (!n--) break;
 			int d=*p++ & 0x3f;
 			if( c<0xe0 ){
 				*q++=((c&31)<<6) | d;
 			}else{
-				if (!n--) continue;
+				if (!n--) break;
 				int e=*p++ & 0x3f;
 				if( c<0xf0 ){
 					*q++=((c&15)<<12) | (d<<6) | e;
 				}else{
-					if (!n--) continue;
+					if (!n--) break;
 					int f=*p++ & 0x3f;
 					int v=((c&7)<<18) | (d<<12) | (e<<6) | f;
 					if( v & 0xffff0000 ) {
@@ -1163,6 +1163,7 @@ BBUINT* bbStringToUTF32String( BBString *str ) {
 			if (((c & 0xfffffc00) == 0xd800) && n < len && ((*p & 0xfffffc00) == 0xdc00)) {
 				*bp++ = (c << 10) + (*p++) - 0x35fdc00;
 			} else {
+				bbMemFree( buf );
 				bbExThrowCString( "Failed to create UTF32. Invalid surrogate pair." );
 			}
 		}