Imported Upstream version 0.7.5
[platform/upstream/libsolv.git] / src / repo.c
index d163f13..da40219 100644 (file)
@@ -391,7 +391,7 @@ repo_addid_dep_hash(Repo *repo, Offset olddeps, Id id, Id marker, int size)
   if (repo->lastidhash_idarraysize != repo->idarraysize || (Hashval)size * 2 > repo->lastidhash_mask || repo->lastmarker != marker)
     {
       repo->lastmarkerpos = 0;
-      if (size * 2 > (Hashval)repo->lastidhash_mask)
+      if ((Hashval)size * 2 > repo->lastidhash_mask)
        {
          repo->lastidhash_mask = mkmask(size < REPO_ADDID_DEP_HASHMIN ? REPO_ADDID_DEP_HASHMIN : size);
          repo->lastidhash = solv_realloc2(repo->lastidhash, repo->lastidhash_mask + 1, sizeof(Id));
@@ -844,7 +844,7 @@ repo_search_md(Repo *repo, Id p, Id keyname, struct matchdata *md)
          case RPM_RPMDBID:
            if (repo->rpmdbid)
              {
-               kv.num = repo->rpmdbid[p - repo->start];
+               kv.num = (unsigned int)repo->rpmdbid[p - repo->start];
                kv.num2 = 0;
                repo_matchvalue(md, s, 0, repo_solvablekeys + (RPM_RPMDBID - SOLVABLE_NAME), &kv);
              }
@@ -1097,7 +1097,7 @@ repo_lookup_num(Repo *repo, Id entry, Id keyname, unsigned long long notfound)
       if (keyname == RPM_RPMDBID)
        {
          if (repo->rpmdbid && entry >= repo->start && entry < repo->end)
-           return repo->rpmdbid[entry - repo->start];
+           return (unsigned int)repo->rpmdbid[entry - repo->start];
          return notfound;
        }
     }
@@ -1250,7 +1250,10 @@ Id
 repo_lookup_type(Repo *repo, Id entry, Id keyname)
 {
   Id type;
-  Repodata *data = repo_lookup_repodata_opt(repo, entry, keyname);
+  Repodata *data;
+  if (keyname >= SOLVABLE_NAME && keyname <= RPM_RPMDBID)
+    return repo_solvablekeys[keyname - SOLVABLE_NAME].type;
+  data = repo_lookup_repodata_opt(repo, entry, keyname);
   if (data && (type = repodata_lookup_type(data, entry, keyname)) != 0 && type != REPOKEY_TYPE_DELETED)
     return type;
   return 0;
@@ -1363,7 +1366,7 @@ repo_set_num(Repo *repo, Id p, Id keyname, unsigned long long num)
        {
          if (!repo->rpmdbid)
            repo->rpmdbid = repo_sidedata_create(repo, sizeof(Id));
-         repo->rpmdbid[p - repo->start] = num;
+         repo->rpmdbid[p - repo->start] = (Id)num;
          return;
        }
     }