From 6fc42341ecdf71d80e3b7ac46961f29beb660c7a Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 18 Aug 2016 09:31:35 +0200 Subject: [PATCH] services: Sort autostart services by dwTagId config value. Signed-off-by: Sebastian Lackner Signed-off-by: Alexandre Julliard --- programs/services/services.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/programs/services/services.c b/programs/services/services.c index 9156dbc6d68..1092a25ed4d 100644 --- a/programs/services/services.c +++ b/programs/services/services.c @@ -318,6 +318,13 @@ static void scmdatabase_remove_service(struct scmdatabase *db, struct service_en service->entry.next = service->entry.prev = NULL; } +static int compare_tags(const void *a, const void *b) +{ + struct service_entry *service_a = *(struct service_entry **)a; + struct service_entry *service_b = *(struct service_entry **)b; + return service_a->config.dwTagId - service_b->config.dwTagId; +} + static void scmdatabase_autostart_services(struct scmdatabase *db) { struct service_entry **services_list; @@ -352,6 +359,7 @@ static void scmdatabase_autostart_services(struct scmdatabase *db) size = i; scmdatabase_unlock(db); + qsort(services_list, size, sizeof(services_list[0]), compare_tags); while (!scmdatabase_lock_startup(db)) Sleep(10); for (i = 0; i < size; i++) -- 2.11.4.GIT