/*@=branchstate@*/
ds->DNEVR = _free(ds->DNEVR);
+ ds->Color = _free(ds->Color);
+ ds->Refs = _free(ds->Refs);
(void) rpmdsUnlink(ds, ds->Type);
/*@-refcounttrans -usereleased@*/
ds->Flags = memcpy(xmalloc(ds->Count * sizeof(*ds->Flags)),
ds->Flags, ds->Count * sizeof(*ds->Flags));
/*@=boundsread@*/
+ ds->Color = xcalloc(Count, sizeof(*ds->Color));
+ ds->Refs = xcalloc(Count, sizeof(*ds->Refs));
/*@-modfilesys@*/
if (_rpmds_debug < 0)
{
rpmTag tagN = 0;
- if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+ if (ds != NULL)
tagN = ds->tagN;
- }
return tagN;
}
return onopromote;
}
+int_32 rpmdsColor(const rpmds ds)
+{
+ int_32 Color = 0;
+
+ if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+/*@-boundsread@*/
+ if (ds->Color != NULL)
+ Color = ds->Color[ds->i];
+/*@=boundsread@*/
+ }
+ return Color;
+}
+
+int_32 rpmdsSetColor(const rpmds ds, int_32 color)
+{
+ int_32 ocolor = 0;
+
+ if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+/*@-boundsread@*/
+ if (ds->Color != NULL) {
+ ocolor = ds->Color[ds->i];
+ ds->Color[ds->i] = color;
+ }
+/*@=boundsread@*/
+ }
+ return ocolor;
+}
+
+int_32 rpmdsRefs(const rpmds ds)
+{
+ int_32 Refs = 0;
+
+ if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+/*@-boundsread@*/
+ if (ds->Refs != NULL)
+ Refs = ds->Refs[ds->i];
+/*@=boundsread@*/
+ }
+ return Refs;
+}
+
+int_32 rpmdsSetRefs(const rpmds ds, int_32 refs)
+{
+ int_32 orefs = 0;
+
+ if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+/*@-boundsread@*/
+ if (ds->Refs != NULL) {
+ orefs = ds->Refs[ds->i];
+ ds->Refs[ds->i] = refs;
+ }
+/*@=boundsread@*/
+ }
+ return orefs;
+}
+
void rpmdsNotify(rpmds ds, const char * where, int rc)
{
if (!(ds != NULL && ds->i >= 0 && ds->i < ds->Count))