diff --git a/trunk/src/client/linux/minidump_writer/minidump_writer.cc b/trunk/src/client/linux/minidump_writer/minidump_writer.cc index ee9adac..77ff7ea 100644 --- a/trunk/src/client/linux/minidump_writer/minidump_writer.cc +++ b/trunk/src/client/linux/minidump_writer/minidump_writer.cc @@ -1212,6 +1212,15 @@ class MinidumpWriter { if (!memory.Allocate(total)) return false; for (MDRVA pos = memory.position(); buffers; buffers = buffers->next) { + // Check for special case of a zero-length buffer. This should only + // occur if a file's size happens to be a multiple of the buffer's + // size, in which case the final sys_read() will have resulted in + // zero bytes being read after the final buffer was just allocated. + if (buffers->len == 0) { + // This can only occur with final buffer. + assert(buffers->next == NULL); + continue; + } memory.Copy(pos, &buffers->data, buffers->len); pos += buffers->len; }