Bug Fix: Handle invalid UTF-8 decoding errors

Apparently, stringWithUTF8String: just returns nil when the encoding is
not UTF-8, rather than throwing an exception.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
Christopher Snowhill 2025-03-10 14:39:38 -07:00
parent 532d22b9bb
commit 5d73246926

View file

@ -112,13 +112,21 @@
static NSString *guess_encoding_of_string(const char *input) { static NSString *guess_encoding_of_string(const char *input) {
NSString *ret = @""; NSString *ret = @"";
@try { if(input && *input) {
ret = [NSString stringWithUTF8String:input]; @try {
} ret = [NSString stringWithUTF8String:input];
@catch(NSException *e) { }
// This method is incredibly slow @catch(NSException *e) {
NSData *stringData = [NSData dataWithBytes:input length:strlen(input)]; ret = nil;
[NSString stringEncodingForData:stringData encodingOptions:nil convertedString:&ret usedLossyConversion:nil]; }
if(!ret) {
// This method is incredibly slow
NSData *stringData = [NSData dataWithBytes:input length:strlen(input)];
[NSString stringEncodingForData:stringData encodingOptions:nil convertedString:&ret usedLossyConversion:nil];
if(!ret) {
ret = @"";
}
}
} }
return ret; return ret;
} }