X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Frepodata.c;h=d527a421cc9a910fe4e0a356c35f6bc2b6d3548b;hb=14c1dfbd0d9c3184178e5e1de3aa3f8d2e29f42f;hp=c35da23abd1823d421fd74276a87eb94acda3b9f;hpb=cb11f93cb0f785bd19a04a14f9242bc99c4dc187;p=platform%2Fupstream%2Flibsolv.git diff --git a/src/repodata.c b/src/repodata.c index c35da23..d527a42 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -2102,6 +2102,7 @@ repodata_extend_block(Repodata *data, Id start, Id num) return; if (!data->incoreoffset) { + /* this also means that data->attrs is NULL */ data->incoreoffset = solv_calloc_block(num, sizeof(Id), REPODATA_BLOCK); data->start = start; data->end = start + num; @@ -2812,6 +2813,10 @@ repodata_swap_attrs(Repodata *data, Id dest, Id src) Id *tmpattrs; if (!data->attrs || dest == src) return; + if (dest < data->start || dest >= data->end) + repodata_extend(data, dest); + if (src < data->start || src >= data->end) + repodata_extend(data, src); tmpattrs = data->attrs[dest - data->start]; data->attrs[dest - data->start] = data->attrs[src - data->start]; data->attrs[src - data->start] = tmpattrs;