Index: src/client/mac/handler/minidump_generator.cc |
diff --git a/src/client/mac/handler/minidump_generator.cc b/src/client/mac/handler/minidump_generator.cc |
index 38baa04e874feeb819ab158f21203fbb8b5c24f6..7d6e81dbb86439110b3106fffe9f31b7f2c70350 100644 |
--- a/src/client/mac/handler/minidump_generator.cc |
+++ b/src/client/mac/handler/minidump_generator.cc |
@@ -133,25 +133,34 @@ void MinidumpGenerator::GatherSystemInformation() { |
vers_path, |
kCFURLPOSIXPathStyle, |
false); |
- CFDataRef data; |
- SInt32 error; |
- CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL, |
- &error); |
- |
+ CFReadStreamRef read_stream = CFReadStreamCreateWithFile(NULL, sys_vers); |
+ CFRelease(sys_vers); |
+ if (!read_stream) { |
+ return; |
+ } |
+ if (!CFReadStreamOpen(read_stream)) { |
+ CFRelease(read_stream); |
+ return; |
+ } |
+ CFDataRef data = NULL; |
+ CFIndex num_bytes_read = 0; |
+ const UInt8 *data_bytes = |
+ CFReadStreamGetBuffer(read_stream, 0, &num_bytes_read); |
+ if (data_bytes) { |
+ data = CFDataCreate(NULL, data_bytes, num_bytes_read); |
+ } |
+ CFReadStreamClose(read_stream); |
+ CFRelease(read_stream); |
if (!data) { |
- CFRelease(sys_vers); |
return; |
} |
- |
CFDictionaryRef list = static_cast<CFDictionaryRef> |
(CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, |
NULL)); |
+ CFRelease(data); |
if (!list) { |
- CFRelease(sys_vers); |
- CFRelease(data); |
return; |
} |
- |
CFStringRef build_version = static_cast<CFStringRef> |
(CFDictionaryGetValue(list, CFSTR("ProductBuildVersion"))); |
CFStringRef product_version = static_cast<CFStringRef> |
@@ -160,8 +169,6 @@ void MinidumpGenerator::GatherSystemInformation() { |
string product_str = ConvertToString(product_version); |
CFRelease(list); |
- CFRelease(sys_vers); |
- CFRelease(data); |
strlcpy(build_string_, build_str.c_str(), sizeof(build_string_)); |