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 7d6e81dbb86439110b3106fffe9f31b7f2c70350..534065674e07670c939fd5746d3c8c7f987f88ef 100644 |
--- a/src/client/mac/handler/minidump_generator.cc |
+++ b/src/client/mac/handler/minidump_generator.cc |
@@ -142,12 +142,25 @@ void MinidumpGenerator::GatherSystemInformation() { |
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); |
+ CFMutableDataRef data = NULL; |
+ while (true) { |
+ // Actual data file tests: Mac at 480 bytes and iOS at 413 bytes. |
+ const CFIndex kMaxBufferLength = 1024; |
+ UInt8 data_bytes[kMaxBufferLength]; |
+ CFIndex num_bytes_read = |
+ CFReadStreamRead(read_stream, data_bytes, kMaxBufferLength); |
+ if (num_bytes_read < 0) { |
+ if (data) { |
+ CFRelease(data); |
+ data = NULL; |
+ } |
+ break; |
+ } else if (num_bytes_read == 0) { |
+ break; |
+ } else if (!data) { |
+ data = CFDataCreateMutable(NULL, 0); |
+ } |
+ CFDataAppendBytes(data, data_bytes, num_bytes_read); |
} |
CFReadStreamClose(read_stream); |
CFRelease(read_stream); |