-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Redefine v and vn needed after listRemove in the merge sections like this:
//merge text sections
for (k = 0; k < list->size; ++k) {
v = listGet(list, k);
vp = listGet(list, k - 1);
vn = listGet(list, k + 1);;
if (checkElementType(v, 'T') && getElementLength(v) >= 5) {
int redo = 0;
if ((checkElementType(vp, 'B') && getElementLength(vp) == 1) || checkElementType(vp, 'T')) {
redo = 1;
v->start = vp->start;
listRemove(list, k - 1);
--k;
// alex !!!
v = listGet(list, k);
vn = listGet(list, k + 1);
}
if ((checkElementType(vn, 'B') && getElementLength(vn) == 1) || checkElementType(vn, 'T')) {
redo = 1;
v->end = vn->end;
listRemove(list, k + 1);
}
if (redo) {
k = -1;
continue;
}
}
}
//merge binary sections
for (k = 0; k < list->size; ++k) {
v = listGet(list, k);
vp = listGet(list, k - 1);
vn = listGet(list, k + 1);
if (checkElementType(v, 'B')) {
int redo = 0;
if ((checkElementType(vp, 'T') && getElementLength(vp) < 5) || checkElementType(vp, 'B')) {
redo = 1;
v->start = vp->start;
listRemove(list, k - 1);
--k;
// alex !!!
v = listGet(list, k);
vn = listGet(list, k + 1);
}
if ((checkElementType(vn, 'T') && getElementLength(vn) < 5) || checkElementType(vn, 'B')) {
redo = 1;
v->end = vn->end;
listRemove(list, k + 1);
}
if (redo) {
k = -1;
continue;
}
}
}