From ecd4ce4aff8ee6ac284ea9f7079cf0bf4f70d23a Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Tue, 17 Jun 2008 13:56:31 +0200 Subject: [PATCH] Fix bug in encoding parsing If a commit had invalid UTF-8 characters in them -- like one in git.git for example -- then the revparsing would stop halfway through. This patch first tries UTF-8 enconding, and if that fails, falls back to ASCII encoding. --- NSFileHandleExt.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/NSFileHandleExt.m b/NSFileHandleExt.m index 9302c99..da15999 100644 --- a/NSFileHandleExt.m +++ b/NSFileHandleExt.m @@ -47,7 +47,10 @@ switch (*(buffer + bytesReceived - 1)) { case '\n': buffer[bytesReceived-1] = '\0'; - return [NSString stringWithCString: buffer encoding: NSUTF8StringEncoding]; + NSString* s = [NSString stringWithCString: buffer encoding: NSUTF8StringEncoding]; + if ([s length] == 0) + s = [NSString stringWithCString: buffer encoding: NSASCIIStringEncoding]; + return s; case '\r': bytesReceived--; } @@ -55,6 +58,9 @@ buffer[bytesReceived-1] = '\0'; NSString *retVal = [NSString stringWithCString: buffer encoding: NSUTF8StringEncoding]; + if ([retVal length] == 0) + retVal = [NSString stringWithCString: buffer encoding: NSASCIIStringEncoding]; + free(buffer); return retVal; }