updated on Fri Jan 20 12:03:34 UTC 2012
[aur-mirror.git] / microdc2 / logfile_segfault.patch
blob2a8d1e0be73365f287b33f42fb3a7075996b0cbd
1 --- a/src/screen.c Fri Jan 25 18:46:56 2008 +0200
2 +++ b/src/screen.c Sat Jan 26 01:28:53 2008 +0200
3 @@ -228,10 +228,29 @@ static void
4 static void
5 flag_vputf(DCDisplayFlag flag, const char *format, va_list args)
7 - //va_list args2;
8 + if (log_fh != NULL && log_flags & flag) {
9 + char c_time[1024];
10 + time_t now = time(NULL);
11 + struct tm _tm = {0};
12 + va_list args_dup;
14 - //va_copy(args2, args);
15 + if (NULL != localtime_r(&now, &_tm) && 0 != strftime(c_time, 1023, "%d.%m.%Y %H:%M:%S", &_tm)) {
16 + fprintf(log_fh, "%s ", c_time);
17 + }
19 + // args would become undefined after xvasprintf() call, so make a copy
20 + // of args to use it later below.
21 + va_copy(args_dup, args);
22 + char* msg = xvasprintf(format, args_dup);
23 + va_end(args_dup);
25 + char* log_msg = main_to_log_string(msg);
26 + free(msg);
27 + fprintf(log_fh, log_msg);
28 + free(log_msg);
29 + fflush(log_fh);
30 + }
32 if (display_flags & flag) {
33 if (screen_state == SCREEN_SUSPENDED) {
34 ptrv_append(suspend_msgs, xvasprintf(format, args));
35 @@ -243,21 +262,6 @@ flag_vputf(DCDisplayFlag flag, const cha
36 vprintf(format, args);
37 fflush(stdout);
39 - }
40 - if (log_fh != NULL && log_flags & flag) {
41 - char c_time[1024];
42 - time_t now = time(NULL);
43 - struct tm _tm = {0};
44 - if (NULL != localtime_r(&now, &_tm) && 0 != strftime(c_time, 1023, "%d.%m.%Y %H:%M:%S", &_tm)) {
45 - fprintf(log_fh, "%s ", c_time);
46 - }
47 - char* msg = xvasprintf(format, args);
48 - //va_end(args2);
49 - char* log_msg = main_to_log_string(msg);
50 - free(msg);
51 - fprintf(log_fh, log_msg);
52 - free(log_msg);
53 - fflush(log_fh);