Exit main thread with winpr_exit to trigger resource cleanup.

When using pthread_once with destructors they are only called,
if each thread (including the main thread) is exited with pthread_exit.
Introducing winpr_exit as a wrapper for that purpose.
This commit is contained in:
Armin Novak
2018-02-09 12:25:45 +01:00
parent 7e26c54866
commit 2d58e96dcc
17 changed files with 67 additions and 49 deletions

View File

@@ -98,7 +98,7 @@ int main(int argc, char* argv[])
WLog_INFO(TAG, "Virtual Screen = %dx%d", vscreen_w, vscreen_h);
}
return 0;
return winpr_exit(0);
}
if (strcmp("--screen", argv[index]) == 0)
@@ -110,13 +110,13 @@ int main(int argc, char* argv[])
if (index == argc)
{
WLog_INFO(TAG, "missing screen id parameter");
return 0;
return winpr_exit(0);
}
val = strtoul(argv[index], NULL, 0);
if ((errno != 0) || (val > UINT32_MAX))
return -1;
return winpr_exit(-1);
set_screen_id(val);
index++;
@@ -127,7 +127,7 @@ int main(int argc, char* argv[])
UINT32 val = strtoul(argv[index], NULL, 0);
if ((errno != 0) || (val > UINT32_MAX))
return -1;
return winpr_exit(-1);
server->port = val;
break;
@@ -170,5 +170,5 @@ int main(int argc, char* argv[])
WLog_INFO(TAG, "Stopping server");
wfreerdp_server_stop(server);
wfreerdp_server_free(server);
return 0;
return winpr_exit(0);
}