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 | 115 | debug("%s: Session changes %p -> %p", __FUNCTION__, widget->hSession, hSession); |
| 116 | 116 | |
| 117 | 117 | if(widget->hSession) { |
| 118 | + | |
| 119 | + debug("Disconnecting from session %p",widget->hSession); | |
| 120 | + | |
| 118 | 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 | 128 | widget->hSession = hSession; |
| ... | ... | @@ -128,7 +135,10 @@ |
| 128 | 135 | // v3270_toggle_button_set_session |
| 129 | 136 | size_t ix; |
| 130 | 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 | 149 | |
| 140 | 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 | 159 | if(trace->filename) { |
| 143 | 160 | g_free(trace->filename); |
| 144 | 161 | trace->filename = NULL; |
| ... | ... | @@ -165,18 +182,7 @@ |
| 165 | 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 | 187 | g_clear_object(&trace->terminal); |
| 182 | 188 | |
| ... | ... | @@ -426,10 +432,13 @@ |
| 426 | 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 | 438 | g_autofree gchar * release = |
| 430 | 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 | 442 | NULL |
| 434 | 443 | ); |
| 435 | 444 | ... | ... |