Commit 24669a81f28667db46bed174ab26118eb87fd4e4
1 parent
d6b8032f
Exists in
master
and in
1 other branch
Fixing valgrind's detections.
Showing
6 changed files
with
80 additions
and
9 deletions
Show diff stats
src/dialogs/colorscheme.c
@@ -126,8 +126,8 @@ | @@ -126,8 +126,8 @@ | ||
126 | 126 | ||
127 | static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkRGBA *clr) | 127 | static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkRGBA *clr) |
128 | { | 128 | { |
129 | - const gchar * val; | ||
130 | - size_t f; | 129 | + gchar * val; |
130 | + size_t f; | ||
131 | 131 | ||
132 | // Load base colors | 132 | // Load base colors |
133 | val = g_key_file_get_string(conf,group,"base",NULL); | 133 | val = g_key_file_get_string(conf,group,"base",NULL); |
@@ -165,7 +165,7 @@ | @@ -165,7 +165,7 @@ | ||
165 | 165 | ||
166 | } | 166 | } |
167 | g_strfreev(str); | 167 | g_strfreev(str); |
168 | - | 168 | + g_free(val); |
169 | } | 169 | } |
170 | else | 170 | else |
171 | { | 171 | { |
@@ -194,6 +194,7 @@ | @@ -194,6 +194,7 @@ | ||
194 | gdk_rgba_parse(clr+V3270_COLOR_FIELD+f,str[f]); | 194 | gdk_rgba_parse(clr+V3270_COLOR_FIELD+f,str[f]); |
195 | 195 | ||
196 | g_strfreev(str); | 196 | g_strfreev(str); |
197 | + g_free(val); | ||
197 | } | 198 | } |
198 | 199 | ||
199 | // Load selection colors | 200 | // Load selection colors |
@@ -208,6 +209,7 @@ | @@ -208,6 +209,7 @@ | ||
208 | gdk_rgba_parse(clr+V3270_COLOR_SELECTED_BG+f,str[f]); | 209 | gdk_rgba_parse(clr+V3270_COLOR_SELECTED_BG+f,str[f]); |
209 | 210 | ||
210 | g_strfreev(str); | 211 | g_strfreev(str); |
212 | + g_free(val); | ||
211 | } | 213 | } |
212 | 214 | ||
213 | // Load OIA colors | 215 | // Load OIA colors |
@@ -243,6 +245,7 @@ | @@ -243,6 +245,7 @@ | ||
243 | } | 245 | } |
244 | 246 | ||
245 | g_strfreev(str); | 247 | g_strfreev(str); |
248 | + g_free(val); | ||
246 | } | 249 | } |
247 | 250 | ||
248 | // Setup extended elements | 251 | // Setup extended elements |
@@ -250,7 +253,10 @@ | @@ -250,7 +253,10 @@ | ||
250 | 253 | ||
251 | val = g_key_file_get_string(conf,group,"cross-hair",NULL); | 254 | val = g_key_file_get_string(conf,group,"cross-hair",NULL); |
252 | if(val) | 255 | if(val) |
256 | + { | ||
253 | gdk_rgba_parse(clr+V3270_COLOR_CROSS_HAIR,val); | 257 | gdk_rgba_parse(clr+V3270_COLOR_CROSS_HAIR,val); |
258 | + g_free(val); | ||
259 | + } | ||
254 | 260 | ||
255 | } | 261 | } |
256 | 262 | ||
@@ -297,7 +303,7 @@ | @@ -297,7 +303,7 @@ | ||
297 | { | 303 | { |
298 | // Setup colors for current entry | 304 | // Setup colors for current entry |
299 | GdkRGBA * clr = GTK_V3270_COLOR_SCHEME(widget)->schemes+index; | 305 | GdkRGBA * clr = GTK_V3270_COLOR_SCHEME(widget)->schemes+index; |
300 | - const gchar * label = g_key_file_get_locale_string(conf,group[g],"label",NULL,NULL); | 306 | + gchar * label = g_key_file_get_locale_string(conf,group[g],"label",NULL,NULL); |
301 | 307 | ||
302 | load_color_scheme(conf,group[g],clr); | 308 | load_color_scheme(conf,group[g],clr); |
303 | 309 | ||
@@ -308,6 +314,8 @@ | @@ -308,6 +314,8 @@ | ||
308 | 1, clr, | 314 | 1, clr, |
309 | -1); | 315 | -1); |
310 | 316 | ||
317 | + g_free(label); | ||
318 | + | ||
311 | // move to next color list | 319 | // move to next color list |
312 | index += V3270_COLOR_COUNT; | 320 | index += V3270_COLOR_COUNT; |
313 | } | 321 | } |
src/include/v3270.h
src/terminal/font.c
@@ -79,7 +79,15 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | @@ -79,7 +79,15 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | ||
79 | 79 | ||
80 | terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; | 80 | terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; |
81 | 81 | ||
82 | - cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight); | 82 | + if(terminal->font.face) |
83 | + { | ||
84 | + cairo_font_face_destroy(terminal->font.face); | ||
85 | + } | ||
86 | + | ||
87 | + terminal->font.face = cairo_toy_font_face_create(terminal->font.family, CAIRO_FONT_SLANT_NORMAL, terminal->font.weight); | ||
88 | + cairo_set_font_face(cr,terminal->font.face); | ||
89 | + | ||
90 | + // cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight); | ||
83 | 91 | ||
84 | if(terminal->font.scaled) | 92 | if(terminal->font.scaled) |
85 | { | 93 | { |
src/terminal/widget.c
@@ -232,6 +232,16 @@ static void v3270_toggle_changed(G_GNUC_UNUSED v3270 *widget, G_GNUC_UNUSED LIB3 | @@ -232,6 +232,16 @@ static void v3270_toggle_changed(G_GNUC_UNUSED v3270 *widget, G_GNUC_UNUSED LIB3 | ||
232 | static void finalize(GObject *object) | 232 | static void finalize(GObject *object) |
233 | { | 233 | { |
234 | debug("V3270::%s",__FUNCTION__); | 234 | debug("V3270::%s",__FUNCTION__); |
235 | + | ||
236 | + v3270 * terminal = GTK_V3270(object); | ||
237 | + | ||
238 | + if(terminal->host) | ||
239 | + { | ||
240 | + // Release session | ||
241 | + lib3270_session_free(terminal->host); | ||
242 | + terminal->host = NULL; | ||
243 | + } | ||
244 | + | ||
235 | G_OBJECT_CLASS(v3270_parent_class)->finalize(object); | 245 | G_OBJECT_CLASS(v3270_parent_class)->finalize(object); |
236 | } | 246 | } |
237 | 247 | ||
@@ -579,10 +589,6 @@ static void v3270_destroy(GtkWidget *widget) | @@ -579,10 +589,6 @@ static void v3270_destroy(GtkWidget *widget) | ||
579 | // Cleanup | 589 | // Cleanup |
580 | lib3270_reset_callbacks(terminal->host); | 590 | lib3270_reset_callbacks(terminal->host); |
581 | lib3270_set_user_data(terminal->host,NULL); | 591 | lib3270_set_user_data(terminal->host,NULL); |
582 | - | ||
583 | - // Release session | ||
584 | - lib3270_session_free(terminal->host); | ||
585 | - terminal->host = NULL; | ||
586 | } | 592 | } |
587 | 593 | ||
588 | if(terminal->accessible) | 594 | if(terminal->accessible) |
@@ -604,6 +610,11 @@ static void v3270_destroy(GtkWidget *widget) | @@ -604,6 +610,11 @@ static void v3270_destroy(GtkWidget *widget) | ||
604 | terminal->font.scaled = NULL; | 610 | terminal->font.scaled = NULL; |
605 | } | 611 | } |
606 | 612 | ||
613 | + if(terminal->font.face) { | ||
614 | + cairo_font_face_destroy(terminal->font.face); | ||
615 | + terminal->font.face = NULL; | ||
616 | + } | ||
617 | + | ||
607 | if(terminal->surface) | 618 | if(terminal->surface) |
608 | { | 619 | { |
609 | cairo_surface_destroy(terminal->surface); | 620 | cairo_surface_destroy(terminal->surface); |
src/trace/widget.c
@@ -110,6 +110,8 @@ | @@ -110,6 +110,8 @@ | ||
110 | if(widget->hSession == hSession) | 110 | if(widget->hSession == hSession) |
111 | return; | 111 | return; |
112 | 112 | ||
113 | + debug("%s: Session changes %p -> %p", __FUNCTION__, widget->hSession, hSession); | ||
114 | + | ||
113 | if(widget->hSession) { | 115 | if(widget->hSession) { |
114 | lib3270_set_trace_handler(widget->hSession,widget->trace.handler,widget->trace.userdata); | 116 | lib3270_set_trace_handler(widget->hSession,widget->trace.handler,widget->trace.userdata); |
115 | } | 117 | } |
valgrind.suppression
@@ -97,3 +97,44 @@ | @@ -97,3 +97,44 @@ | ||
97 | fun:g_type_create_instance | 97 | fun:g_type_create_instance |
98 | } | 98 | } |
99 | 99 | ||
100 | +{ | ||
101 | + fontconfig_FcPatternDuplicate | ||
102 | + Memcheck:Leak | ||
103 | + ... | ||
104 | + fun:FcPatternDuplicate | ||
105 | +} | ||
106 | + | ||
107 | +{ | ||
108 | + gtk_style_context_set_state | ||
109 | + Memcheck:Leak | ||
110 | + ... | ||
111 | + fun:gtk_style_context_set_state | ||
112 | +} | ||
113 | + | ||
114 | +{ | ||
115 | + g_param_spec_flags | ||
116 | + Memcheck:Leak | ||
117 | + ... | ||
118 | + fun:g_param_spec_flags | ||
119 | +} | ||
120 | + | ||
121 | +{ | ||
122 | + gtk_style_new | ||
123 | + Memcheck:Leak | ||
124 | + ... | ||
125 | + fun:gtk_style_new | ||
126 | +} | ||
127 | + | ||
128 | +{ | ||
129 | + libcrypto_BIO_read | ||
130 | + Memcheck:Cond | ||
131 | + fun:BIO_read | ||
132 | +} | ||
133 | + | ||
134 | +{ | ||
135 | + cairo_mask | ||
136 | + Memcheck:Cond | ||
137 | + ... | ||
138 | + fun:cairo_mask | ||
139 | +} | ||
140 | + |