Compare: Add the authors from the 'other' document

Otherwise the resulting document may contain references to authors that are not present in the author list, which results in a crash.

Fixes-bug: #8769
This commit is contained in:
Vincent van Ravesteijn 2014-02-07 14:06:39 +01:00
parent 1f13491f06
commit ea6f56d564

View File

@ -12,6 +12,7 @@
#include "Compare.h" #include "Compare.h"
#include "Author.h"
#include "BufferParams.h" #include "BufferParams.h"
#include "Changes.h" #include "Changes.h"
#include "Font.h" #include "Font.h"
@ -364,10 +365,17 @@ void Compare::run()
if (!dest_buffer || !new_buffer || !old_buffer) if (!dest_buffer || !new_buffer || !old_buffer)
return; return;
// Copy the buffer params to the new buffer // Copy the buffer params to the destination buffer
dest_buffer->params() = options_.settings_from_new dest_buffer->params() = options_.settings_from_new
? new_buffer->params() : old_buffer->params(); ? new_buffer->params() : old_buffer->params();
// Copy extra authors to the destination buffer
AuthorList const & extra_authors = options_.settings_from_new ?
old_buffer->params().authors() : new_buffer->params().authors();
AuthorList::Authors::const_iterator it = extra_authors.begin();
for (; it != extra_authors.end(); it++)
dest_buffer->params().authors().record(*it);
doStatusMessage(); doStatusMessage();
// do the real work // do the real work