forked from pool/systemd
46 lines
1.5 KiB
Diff
46 lines
1.5 KiB
Diff
|
Based on 85529c815b47c22839e0f148af67fd37e977cbfa Mon Sep 17 00:00:00 2001
|
||
|
From: Lennart Poettering <lennart@poettering.net>
|
||
|
Date: Tue, 12 Aug 2014 19:29:27 +0200
|
||
|
Subject: [PATCH] sd-resolve: fix allocation if query ids, never reuse them
|
||
|
|
||
|
---
|
||
|
src/libsystemd/sd-resolve/sd-resolve.c | 12 ++++--------
|
||
|
1 file changed, 4 insertions(+), 8 deletions(-)
|
||
|
|
||
|
--- src/libsystemd/sd-resolve/sd-resolve.c
|
||
|
+++ src/libsystemd/sd-resolve/sd-resolve.c 2014-08-22 14:18:24.838235343 +0000
|
||
|
@@ -81,7 +81,7 @@ struct sd_resolve {
|
||
|
pthread_t workers[WORKERS_MAX];
|
||
|
unsigned n_valid_workers;
|
||
|
|
||
|
- unsigned current_id, current_index;
|
||
|
+ unsigned current_id;
|
||
|
sd_resolve_query* queries[QUERIES_MAX];
|
||
|
unsigned n_queries;
|
||
|
|
||
|
@@ -892,21 +892,17 @@ static int alloc_query(sd_resolve *resol
|
||
|
if (r < 0)
|
||
|
return r;
|
||
|
|
||
|
- while (resolve->queries[resolve->current_index]) {
|
||
|
- resolve->current_index++;
|
||
|
+ while (resolve->queries[resolve->current_id % QUERIES_MAX])
|
||
|
resolve->current_id++;
|
||
|
|
||
|
- resolve->current_index %= QUERIES_MAX;
|
||
|
- }
|
||
|
-
|
||
|
- q = resolve->queries[resolve->current_index] = new0(sd_resolve_query, 1);
|
||
|
+ q = resolve->queries[resolve->current_id % QUERIES_MAX] = new0(sd_resolve_query, 1);
|
||
|
if (!q)
|
||
|
return -ENOMEM;
|
||
|
|
||
|
resolve->n_queries++;
|
||
|
|
||
|
q->resolve = resolve;
|
||
|
- q->id = resolve->current_id;
|
||
|
+ q->id = resolve->current_id++;
|
||
|
|
||
|
*_q = q;
|
||
|
return 0;
|