1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-11 09:18:07 +03:00

sd-resolve: fix allocation if query ids, never reuse them

This commit is contained in:
Lennart Poettering 2014-08-12 19:29:27 +02:00
parent 502fe44ea4
commit 85529c815b
Notes: Lennart Poettering 2014-08-19 20:52:34 +02:00
Backport: bugfix

View File

@ -85,7 +85,7 @@ struct sd_resolve {
pthread_t workers[WORKERS_MAX];
unsigned n_valid_workers;
unsigned current_id, current_index;
unsigned current_id;
sd_resolve_query* query_array[QUERIES_MAX];
unsigned n_queries, n_done;
@ -1024,21 +1024,17 @@ static int alloc_query(sd_resolve *resolve, bool floating, sd_resolve_query **_q
if (r < 0)
return r;
while (resolve->query_array[resolve->current_index]) {
resolve->current_index++;
while (resolve->query_array[resolve->current_id % QUERIES_MAX])
resolve->current_id++;
resolve->current_index %= QUERIES_MAX;
}
q = resolve->query_array[resolve->current_index] = new0(sd_resolve_query, 1);
q = resolve->query_array[resolve->current_id % QUERIES_MAX] = new0(sd_resolve_query, 1);
if (!q)
return -ENOMEM;
q->n_ref = 1;
q->resolve = resolve;
q->floating = floating;
q->id = resolve->current_id;
q->id = resolve->current_id++;
if (!floating)
sd_resolve_ref(resolve);