Commit b70bb2fc3c9164d28ea0ef2dcceed6bccea6cc8a
1 parent
12e3bf67
Exists in
master
and in
5 other branches
Corrigindo segfault na impressão quando a tabela de cores está errada
Showing
2 changed files
with
19 additions
and
7 deletions
Show diff stats
src/pw3270/print.c
@@ -395,6 +395,9 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -395,6 +395,9 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
395 | { | 395 | { |
396 | gchar *ptr = get_string_from_config("print","colors",""); | 396 | gchar *ptr = get_string_from_config("print","colors",""); |
397 | 397 | ||
398 | + trace("info->color=%p",info->color); | ||
399 | + trace("colorlist=%p",ptr); | ||
400 | + | ||
398 | if(*ptr) | 401 | if(*ptr) |
399 | v3270_set_color_table(info->color,ptr); | 402 | v3270_set_color_table(info->color,ptr); |
400 | else | 403 | else |
src/pw3270/v3270/widget.c
@@ -1296,15 +1296,24 @@ void v3270_set_color_table(GdkRGBA *table, const gchar *colors) | @@ -1296,15 +1296,24 @@ void v3270_set_color_table(GdkRGBA *table, const gchar *colors) | ||
1296 | 1296 | ||
1297 | g_warning("Color table has %d elements; should be %d.",cnt,V3270_COLOR_COUNT); | 1297 | g_warning("Color table has %d elements; should be %d.",cnt,V3270_COLOR_COUNT); |
1298 | 1298 | ||
1299 | - for(f=0;f < cnt;f++) | ||
1300 | - gdk_rgba_parse(table+f,clr[f]); | ||
1301 | - | ||
1302 | - for(f=cnt; f < V3270_COLOR_COUNT;f++) | ||
1303 | - gdk_rgba_parse(table+f,clr[cnt-1]); | 1299 | + if(cnt < V3270_COLOR_COUNT) |
1300 | + { | ||
1301 | + // Less than the required | ||
1302 | + for(f=0;f < cnt;f++) | ||
1303 | + gdk_rgba_parse(table+f,clr[f]); | ||
1304 | 1304 | ||
1305 | - clr[V3270_COLOR_OIA_BACKGROUND] = clr[0]; | ||
1306 | - clr[V3270_COLOR_SELECTED_BG] = clr[0]; | 1305 | + for(f=cnt; f < V3270_COLOR_COUNT;f++) |
1306 | + gdk_rgba_parse(table+f,clr[cnt-1]); | ||
1307 | 1307 | ||
1308 | + clr[V3270_COLOR_OIA_BACKGROUND] = clr[0]; | ||
1309 | + clr[V3270_COLOR_SELECTED_BG] = clr[0]; | ||
1310 | + } | ||
1311 | + else | ||
1312 | + { | ||
1313 | + // More than required | ||
1314 | + for(f=0;f < V3270_COLOR_COUNT;f++) | ||
1315 | + gdk_rgba_parse(table+f,clr[f]); | ||
1316 | + } | ||
1308 | } | 1317 | } |
1309 | 1318 | ||
1310 | g_strfreev(clr); | 1319 | g_strfreev(clr); |