- Authors::const_iterator it(authors_.begin());
- Authors::const_iterator itend(authors_.end());
- for (int i = 0; it != itend; ++it, ++i) {
- if (*it == a)
- return i;
+ Authors::const_iterator it = authors_.begin();
+ Authors::const_iterator const beg = it;
+ Authors::const_iterator const end = authors_.end();
+ for (; it != end; ++it) {
+ if (valid && *it == a)
+ return it - beg;
+ if (it->bufferId() == a.bufferId()) {
+ int id = it - beg;
+ if (!it->valid())
+ // we need to handle the case of a valid author being registred
+ // after an invalid one. For instance, because "buffer-reload"
+ // does not clear the buffer's author list.
+ record(id, a);
+ return id;
+ }