X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Foutput-item.c;h=a4328b52e99725be3d9d568db3c31f4adfc8495b;hb=142f8f8814423f76523825f8df060e2fa9d2a2b6;hp=a46fdf8020b9c904641c78328e30b3d7f3cef966;hpb=672776c201a00e1a667d37a957e7d2211300d48a;p=pspp diff --git a/src/output/output-item.c b/src/output/output-item.c index a46fdf8020..a4328b52e9 100644 --- a/src/output/output-item.c +++ b/src/output/output-item.c @@ -86,6 +86,7 @@ output_item_unref (struct output_item *item) case OUTPUT_ITEM_GROUP: for (size_t i = 0; i < item->group.n_children; i++) output_item_unref (item->group.children[i]); + free (item->group.children); break; case OUTPUT_ITEM_IMAGE: @@ -164,7 +165,7 @@ output_item_unshare (struct output_item *old) = old->group.n_children; for (size_t i = 0; i < new->group.n_children; i++) - output_item_ref (new->group.children[i]); + new->group.children[i] = output_item_ref (new->group.children[i]); break; case OUTPUT_ITEM_IMAGE: @@ -359,13 +360,17 @@ output_item_dump (const struct output_item *item, int indentation) break; case OUTPUT_ITEM_TABLE: + printf ("table\n"); pivot_table_dump (item->table, indentation + 1); break; case OUTPUT_ITEM_TEXT: - printf ("text %s \"%s\"\n", - text_item_subtype_to_string (item->text.subtype), - pivot_value_to_string_defaults (item->text.content)); + { + char *s = pivot_value_to_string_defaults (item->text.content); + printf ("text %s \"%s\"\n", + text_item_subtype_to_string (item->text.subtype), s); + free (s); + } break; } } @@ -586,17 +591,18 @@ text_item_create_value (enum text_item_subtype subtype, { if (subtype == TEXT_ITEM_SYNTAX || subtype == TEXT_ITEM_LOG) { - if (!value->font_style) + struct pivot_value_ex *ex = pivot_value_ex_rw (value); + if (!ex->font_style) { - value->font_style = xmalloc (sizeof *value->font_style); - *value->font_style = (struct font_style) FONT_STYLE_INITIALIZER; + ex->font_style = xmalloc (sizeof *value->ex->font_style); + *ex->font_style = (struct font_style) FONT_STYLE_INITIALIZER; } - free (value->font_style->typeface); - value->font_style->typeface = xstrdup ("Monospaced"); + free (ex->font_style->typeface); + ex->font_style->typeface = xstrdup ("Monospaced"); } - struct output_item *item = xzalloc (sizeof *item); + struct output_item *item = XZALLOC (struct output_item); *item = (struct output_item) { OUTPUT_ITEM_INITIALIZER (OUTPUT_ITEM_TEXT), .command_name = xstrdup_if_nonnull (output_get_command_name ()), @@ -652,8 +658,9 @@ text_item_append (struct output_item *dst, const struct output_item *src) if (ds != ss || (ds != TEXT_ITEM_SYNTAX && ds != TEXT_ITEM_LOG) || strcmp (output_item_get_label (dst), output_item_get_label (src)) - || !nullable_font_style_equal (dc->font_style, sc->font_style) - || (dc->font_style && dc->font_style->markup) + || !nullable_font_style_equal (dc->ex ? dc->ex->font_style : NULL, + sc->ex ? sc->ex->font_style : NULL) + || (dc->ex && dc->ex->font_style && dc->ex->font_style->markup) || sc->type != PIVOT_VALUE_TEXT || dc->type != PIVOT_VALUE_TEXT) return false;