Skip to content

Commit 9c02f05

Browse files
committed
Fix segmented generate_n bug
1 parent 7fbad9c commit 9c02f05

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

include/boost/container/experimental/segmented_generate_n.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,17 @@ SegIt generate_n_scan(SegIt first, SegIt last, Size& count, Generator& gen, segm
109109
}
110110
else {
111111
local_iterator lcur = generate_n_scan(traits::local(first), traits::end(scur), count, gen, is_local_seg_t());
112-
for(++scur; scur != slast && count > 0; ++scur)
113-
lcur = generate_n_scan(traits::begin(scur), traits::end(scur), count, gen, is_local_seg_t());
114-
if(count > 0)
115-
lcur = generate_n_scan(traits::begin(slast), traits::local(last), count, gen, is_local_seg_t());
112+
if(count > 0) {
113+
for(++scur; scur != slast; ++scur) {
114+
lcur = generate_n_scan(traits::begin(scur), traits::end(scur), count, gen, is_local_seg_t());
115+
if(!count)
116+
break;
117+
}
118+
if(count > 0 && scur == slast)
119+
lcur = generate_n_scan(traits::begin(slast), traits::local(last), count, gen, is_local_seg_t());
120+
}
116121
return traits::compose(scur, lcur);
117122
}
118-
119123
}
120124

121125
template <class SegIter, class Size, class Generator>

0 commit comments

Comments
 (0)