- size_t e;
-
- PLIST_MOV_EXPAND_EX(list, offset_start, num_eles);
- for (e = 0; e < num_eles; ++e) {
- PLIST_CPY(list, PLIST_ELE(list, offset_start + e), &eles[e]);
+ new_count = MAX(offset_start, list->count) + num_eles;
+ if (new_count) {
+ list = safe_perealloc(list, new_count + 1, list->size, sizeof(*list), 1);
+ }
+ if (list) {
+ PLIST_MOV_EXPAND_EX(list, offset_start, num_eles);
+ PLIST_CPY_R(list, PLIST_ELE(list, offset_start), eles, num_eles);
+ list->count = new_count;