Skip to content

Commit 5e4ff54

Browse files
committed
Fix apkv3 dependency operator handling
1 parent 1639245 commit 5e4ff54

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

ext/repo_apkv3.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,16 @@ adb_get_dep(const unsigned char *adb, size_t adblen, unsigned int v, Pool *pool,
161161
{
162162
unsigned int cnt;
163163
Id id, evr;
164-
unsigned long long match;;
164+
unsigned long long match;
165165
if (!(cnt = adb_arr(adb, adblen, v)))
166166
return 0;
167167
id = adb_poolid(adb, adblen, adb_idx(adb, v, cnt, 1), pool);
168168
if (!id)
169169
return 0;
170170
evr = cnt > 2 ? adb_poolid(adb, adblen, adb_idx(adb, v, cnt, 2), pool) : 0;
171-
match = cnt > 3 ? adb_num(adb, adblen, adb_idx(adb, v, cnt, 3), &match) : 1;
171+
match = 1;
172+
if (cnt > 3 && !adb_num(adb, adblen, adb_idx(adb, v, cnt, 3), &match))
173+
return 0;
172174
if (match & 16)
173175
{
174176
if (!whatp || *whatp != SOLVABLE_REQUIRES)
@@ -189,7 +191,7 @@ adb_get_dep(const unsigned char *adb, size_t adblen, unsigned int v, Pool *pool,
189191
/* fuzzy match, prepend ~ to evr */
190192
char *space = pool_alloctmpspace(pool, strlen(pool_id2str(pool, evr)) + 2);
191193
space[0] = '~';
192-
strcpy(space, pool_id2str(pool, evr));
194+
strcpy(space + 1, pool_id2str(pool, evr));
193195
evr = pool_str2id(pool, space, 1);
194196
pool_freetmpspace(pool, space);
195197
}
@@ -248,6 +250,7 @@ adb_add_pkg_info(Pool *pool, Repo *repo, Repodata *data, const unsigned char *ad
248250
s = pool_id2solvable(pool, repo_add_solvable(repo));
249251
s->name = name;
250252
s->evr = adb_poolid(adb, adblen, adb_idx(adb, v, cnt, 2), pool);
253+
adb_setstr(adb, adblen, adb_idx(adb, v, cnt, 4), data, s - pool->solvables, SOLVABLE_SUMMARY);
251254
adb_setstr(adb, adblen, adb_idx(adb, v, cnt, 4), data, s - pool->solvables, SOLVABLE_DESCRIPTION);
252255
s->arch = adb_poolid(adb, adblen, adb_idx(adb, v, cnt, 5), pool);
253256
license = adb_poolid(adb, adblen, adb_idx(adb, v, cnt, 6), pool);

0 commit comments

Comments
 (0)