diff --git a/dix/main.c b/dix/main.c index c46e40ab7..1fa05040f 100644 --- a/dix/main.c +++ b/dix/main.c @@ -358,6 +358,8 @@ main(int argc, char *argv[], char *envp[]) dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT); serverClient->devPrivates = NULL; + dixFreeRegistry(); + FreeFonts(); FreeAllAtoms(); diff --git a/dix/registry.c b/dix/registry.c index 5bad0fdd4..82a3340e1 100644 --- a/dix/registry.c +++ b/dix/registry.c @@ -280,14 +280,9 @@ LookupResourceName(RESTYPE resource) return resources[resource] ? resources[resource] : XREGISTRY_UNKNOWN; } -/* - * Setup and teardown - */ void -dixResetRegistry(void) +dixFreeRegistry(void) { - ExtensionEntry extEntry = { .name = CORE }; - /* Free all memory */ while (nmajor--) { while (nminor[nmajor]) @@ -315,9 +310,23 @@ dixResetRegistry(void) nmajor = nevent = nerror = nresource = 0; + if (fh) { + fclose(fh); + fh = NULL; + } +} + +/* + * Setup and teardown + */ +void +dixResetRegistry(void) +{ + ExtensionEntry extEntry = { .name = CORE }; + + dixFreeRegistry(); + /* Open the protocol file */ - if (fh) - fclose(fh); fh = fopen(FILENAME, "r"); if (!fh) LogMessage(X_WARNING, diff --git a/include/registry.h b/include/registry.h index f471b899f..e298ab6fc 100644 --- a/include/registry.h +++ b/include/registry.h @@ -44,6 +44,7 @@ extern _X_EXPORT const char *LookupResourceName(RESTYPE rtype); * Setup and teardown */ extern _X_EXPORT void dixResetRegistry(void); +extern _X_EXPORT void dixFreeRegistry(void); #else /* XREGISTRY */