Skip to content

Commit ae9db8d

Browse files
committed
Clear repodata->lasthandle for freed/swapped solvable
Fixes issue #377
1 parent c9f7f29 commit ae9db8d

2 files changed

Lines changed: 4 additions & 0 deletions

File tree

src/repo.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ repo_free_solvable_block(Repo *repo, Id start, int count, int reuseids)
213213
int j;
214214
for (j = dstart; j < dend; j++)
215215
data->attrs[j - data->start] = solv_free(data->attrs[j - data->start]);
216+
if (data->lasthandle >= dstart && data->lasthandle < dend)
217+
data->lasthandle = 0;
216218
}
217219
if (data->incoreoffset)
218220
memset(data->incoreoffset + (dstart - data->start), 0, (dend - dstart) * sizeof(Id));

src/repodata.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3100,6 +3100,8 @@ repodata_swap_attrs(Repodata *data, Id dest, Id src)
31003100
tmpattrs = data->attrs[dest - data->start];
31013101
data->attrs[dest - data->start] = data->attrs[src - data->start];
31023102
data->attrs[src - data->start] = tmpattrs;
3103+
if (data->lasthandle == src || data->lasthandle == dest)
3104+
data->lasthandle = 0;
31033105
}
31043106

31053107

0 commit comments

Comments
 (0)