Commit 52974d23724c2c55575e0e4cd3b269a9f9a3ca5f
1 parent
78d5bf07
Exists in
master
and in
1 other branch
Adjustments to find why the trace windows segfaults on release packages.
Showing
1 changed file
with
24 additions
and
15 deletions
Show diff stats
src/trace/trace.c
| @@ -115,7 +115,14 @@ | @@ -115,7 +115,14 @@ | ||
| 115 | debug("%s: Session changes %p -> %p", __FUNCTION__, widget->hSession, hSession); | 115 | debug("%s: Session changes %p -> %p", __FUNCTION__, widget->hSession, hSession); |
| 116 | 116 | ||
| 117 | if(widget->hSession) { | 117 | if(widget->hSession) { |
| 118 | + | ||
| 119 | + debug("Disconnecting from session %p",widget->hSession); | ||
| 120 | + | ||
| 118 | lib3270_set_trace_handler(widget->hSession,widget->trace.handler,widget->trace.userdata); | 121 | lib3270_set_trace_handler(widget->hSession,widget->trace.handler,widget->trace.userdata); |
| 122 | + | ||
| 123 | + size_t ix; | ||
| 124 | + for(ix=0;ix < G_N_ELEMENTS(toggles); ix++) | ||
| 125 | + lib3270_set_toggle(widget->hSession, toggles[ix],0); | ||
| 119 | } | 126 | } |
| 120 | 127 | ||
| 121 | widget->hSession = hSession; | 128 | widget->hSession = hSession; |
| @@ -128,7 +135,10 @@ | @@ -128,7 +135,10 @@ | ||
| 128 | // v3270_toggle_button_set_session | 135 | // v3270_toggle_button_set_session |
| 129 | size_t ix; | 136 | size_t ix; |
| 130 | for(ix = 0; ix < G_N_ELEMENTS(toggles); ix++) | 137 | for(ix = 0; ix < G_N_ELEMENTS(toggles); ix++) |
| 131 | - v3270_toggle_button_set_session(widget->buttons.widgets[ix],hSession); | 138 | + { |
| 139 | + if(widget->buttons.widgets[ix]) | ||
| 140 | + v3270_toggle_button_set_session(widget->buttons.widgets[ix],hSession); | ||
| 141 | + } | ||
| 132 | 142 | ||
| 133 | 143 | ||
| 134 | } | 144 | } |
| @@ -139,6 +149,13 @@ | @@ -139,6 +149,13 @@ | ||
| 139 | 149 | ||
| 140 | V3270Trace *trace = GTK_V3270_TRACE(object); | 150 | V3270Trace *trace = GTK_V3270_TRACE(object); |
| 141 | 151 | ||
| 152 | + size_t ix; | ||
| 153 | + for(ix = 0; ix < G_N_ELEMENTS(toggles); ix++) | ||
| 154 | + { | ||
| 155 | + // TODO: Use button "destroy" signal to cleanup. | ||
| 156 | + trace->buttons.widgets[ix] = NULL; | ||
| 157 | + } | ||
| 158 | + | ||
| 142 | if(trace->filename) { | 159 | if(trace->filename) { |
| 143 | g_free(trace->filename); | 160 | g_free(trace->filename); |
| 144 | trace->filename = NULL; | 161 | trace->filename = NULL; |
| @@ -165,18 +182,7 @@ | @@ -165,18 +182,7 @@ | ||
| 165 | GTK_V3270(trace->terminal)->trace = NULL; | 182 | GTK_V3270(trace->terminal)->trace = NULL; |
| 166 | } | 183 | } |
| 167 | 184 | ||
| 168 | - if(trace->hSession) { | ||
| 169 | - | ||
| 170 | - g_message("Disabling lib3270 traces"); | ||
| 171 | - | ||
| 172 | - size_t ix; | ||
| 173 | - for(ix=0;ix < G_N_ELEMENTS(toggles); ix++) | ||
| 174 | - lib3270_set_toggle(trace->hSession, toggles[ix],0); | ||
| 175 | - | ||
| 176 | - lib3270_set_trace_handler(trace->hSession,trace->trace.handler,trace->trace.userdata); | ||
| 177 | - trace->hSession = NULL; | ||
| 178 | - | ||
| 179 | - } | 185 | + set_session(trace,NULL); |
| 180 | 186 | ||
| 181 | g_clear_object(&trace->terminal); | 187 | g_clear_object(&trace->terminal); |
| 182 | 188 | ||
| @@ -426,10 +432,13 @@ | @@ -426,10 +432,13 @@ | ||
| 426 | GTK_V3270_GET_CLASS(terminal)->properties.trace | 432 | GTK_V3270_GET_CLASS(terminal)->properties.trace |
| 427 | ); | 433 | ); |
| 428 | 434 | ||
| 435 | + const gchar * lib3270_release = lib3270_get_build_rpq_timestamp(); | ||
| 436 | + const gchar * libv3270_release = G_STRINGIFY(RPQ_TIMESTAMP); | ||
| 437 | + | ||
| 429 | g_autofree gchar * release = | 438 | g_autofree gchar * release = |
| 430 | g_strconcat( G_STRINGIFY(PRODUCT_NAME) " Revisions ", | 439 | g_strconcat( G_STRINGIFY(PRODUCT_NAME) " Revisions ", |
| 431 | - lib3270_get_build_rpq_timestamp(), | ||
| 432 | - " " G_STRINGIFY(RPQ_TIMESTAMP) "\n\n", | 440 | + lib3270_release, |
| 441 | + " ", libv3270_release, "\n\n", | ||
| 433 | NULL | 442 | NULL |
| 434 | ); | 443 | ); |
| 435 | 444 |