Skip to content

Commit d63f2b1

Browse files
committed
GitRevList: cache the values of string encodings
1 parent 38198a9 commit d63f2b1

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

PBGitRevList.mm

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <ext/stdio_filebuf.h>
1717
#include <iostream>
1818
#include <string>
19+
#include <map>
1920

2021
using namespace std;
2122

@@ -71,6 +72,7 @@ - (void) walkRevisionListWithSpecifier: (PBGitRevSpecifier*) rev
7172
NSDate *start = [NSDate date];
7273
NSMutableArray* revisions = [NSMutableArray array];
7374
PBGitGrapher* g = [[PBGitGrapher alloc] initWithRepository: repository];
75+
std::map<string, NSStringEncoding> encodingMap;
7476

7577
NSMutableArray* arguments;
7678
BOOL showSign = [rev hasLeftRight];
@@ -124,7 +126,14 @@ - (void) walkRevisionListWithSpecifier: (PBGitRevSpecifier*) rev
124126
getline(stream, encoding_str, '\1');
125127
NSStringEncoding encoding = NSUTF8StringEncoding;
126128
if (encoding_str.length())
127-
encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithUTF8String:encoding_str.c_str()]));
129+
{
130+
if (encodingMap.count(encoding_str)) {
131+
encoding = encodingMap[encoding_str];
132+
} else {
133+
encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithUTF8String:encoding_str.c_str()]));
134+
encodingMap[encoding_str] = encoding;
135+
}
136+
}
128137

129138
git_oid oid;
130139
git_oid_mkstr(&oid, sha.c_str());

0 commit comments

Comments
 (0)