Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:kostyasha:rosa
rpm
rpm-5.4.9-add-support-for-using-rpmdsMerge-with...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rpm-5.4.9-add-support-for-using-rpmdsMerge-with-filepath-tags.patch of Package rpm
--- rpm-5.4.9/lib/rpmds.c.ds_merge~ 2012-05-15 03:43:11.000000000 +0200 +++ rpm-5.4.9/lib/rpmds.c 2012-05-15 03:46:37.823554837 +0200 @@ -973,21 +973,24 @@ static rpmds rpmdsDup(const rpmds ods) : rpmdsDupArgv(ods->N, ods->Count) ); /* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */ + if (ods->tagN != RPMTAG_BASENAMES && + ods->tagN != RPMTAG_DIRNAMES && + ods->tagN != RPMTAG_FILEPATHS) { assert(ods->EVR != NULL); assert(ods->Flags != NULL); - - nb = (ds->Count+1) * sizeof(*ds->EVR); - ds->EVR = (const char **) (ds->h != NULL - ? memcpy(xmalloc(nb), ods->EVR, nb) - : rpmdsDupArgv(ods->EVR, ods->Count) ); - - nb = (ds->Count * sizeof(*ds->Flags)); - ds->Flags = (evrFlags *) (ds->h != NULL - ? ods->Flags - : memcpy(xmalloc(nb), ods->Flags, nb) ); - ds->nopromote = ods->nopromote; -/*@-assignexpose@*/ - ds->EVRcmp = ods->EVRcmp;; + nb = (ds->Count+1) * sizeof(*ds->EVR); + ds->EVR = (ds->h != NULL + ? memcpy(xmalloc(nb), ods->EVR, nb) + : rpmdsDupArgv(ods->EVR, ods->Count) ); + + nb = (ds->Count * sizeof(*ds->Flags)); + ds->Flags = (ds->h != NULL + ? ods->Flags + : memcpy(xmalloc(nb), ods->Flags, nb) ); + ds->nopromote = ods->nopromote; + /*@-assignexpose@*/ + ds->EVRcmp = ods->EVRcmp; + } /*@=assignexpose@*/ /*@-compmempass@*/ /* FIX: ds->Flags is kept, not only */ @@ -1075,24 +1078,28 @@ save = ods->i; /* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */ /*@-nullderef -nullpass -nullptrarith @*/ + if (ds->tagN != RPMTAG_BASENAMES && + ds->tagN != RPMTAG_DIRNAMES && + ds->tagN != RPMTAG_FILEPATHS) { assert(ods->EVR != NULL); assert(ods->Flags != NULL); - for (j = ds->Count; j > (int)ds->u; j--) - ds->EVR[j] = ds->EVR[j-1]; - ds->EVR[ds->u] = ods->EVR[ods->i]; - EVR = rpmdsDupArgv(ds->EVR, ds->Count+1); - ds->EVR = _free(ds->EVR); - ds->EVR = EVR; - - Flags = (evrFlags *) xmalloc((ds->Count+1) * sizeof(*Flags)); - if (ds->u > 0) - memcpy(Flags, ds->Flags, ds->u * sizeof(*Flags)); - if (ds->u < ds->Count) - memcpy(Flags + ds->u + 1, ds->Flags + ds->u, (ds->Count - ds->u) * sizeof(*Flags)); - Flags[ds->u] = ods->Flags[ods->i]; - ds->Flags = _free(ds->Flags); - ds->Flags = Flags; + for (j = ds->Count; j > (int)ds->u; j--) + ds->EVR[j] = ds->EVR[j-1]; + ds->EVR[ds->u] = ods->EVR[ods->i]; + EVR = rpmdsDupArgv(ds->EVR, ds->Count+1); + ds->EVR = _free(ds->EVR); + ds->EVR = EVR; + + Flags = xmalloc((ds->Count+1) * sizeof(*Flags)); + if (ds->u > 0) + memcpy(Flags, ds->Flags, ds->u * sizeof(*Flags)); + if (ds->u < ds->Count) + memcpy(Flags + ds->u + 1, ds->Flags + ds->u, (ds->Count - ds->u) * sizeof(*Flags)); + Flags[ds->u] = ods->Flags[ods->i]; + ds->Flags = _free(ds->Flags); + ds->Flags = Flags; + } /*@=nullderef =nullpass =nullptrarith @*/ ds->i = -1;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor