[goffice] Fix component duplication. [#483]
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Fix component duplication. [#483]
- Date: Wed, 29 Apr 2020 15:15:24 +0000 (UTC)
commit 0c507180547ced0273670734ce27ecc551dd5555
Author: Jean Brefort <jean brefort normalesup org>
Date: Wed Apr 29 17:15:03 2020 +0200
Fix component duplication. [#483]
ChangeLog | 5 +++++
NEWS | 1 +
goffice/component/go-component.c | 13 +++----------
3 files changed, 9 insertions(+), 10 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index e9fdca59..0b4ab53c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-29 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/component/go-component.c (go_component_duplicate): do not destroy
+ original data. Fix #483.
+
2020-04-28 Jean Brefort <jean brefort normalesup org>
* goffice/graph/gog-axis-line.c
diff --git a/NEWS b/NEWS
index a153c2c3..ae3eb291 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ Jean:
* Fix legend order in bar plots.
* Test plot series validity after a data change. [#468]
* Fix crossing axis position. [#45]
+ * Fix component duplication. [#483]
Morten:
* Fix library namespace issue.
diff --git a/goffice/component/go-component.c b/goffice/component/go-component.c
index 119ada8e..c4c54bef 100644
--- a/goffice/component/go-component.c
+++ b/goffice/component/go-component.c
@@ -947,10 +947,6 @@ GOComponent *
go_component_duplicate (GOComponent const *component)
{
GOComponent *res;
- char *buf;
- int length;
- void (*clearfunc) (gpointer) = NULL;
- gpointer user_data = NULL;
GValue value;
guint i, nbprops;
GType prop_type;
@@ -975,14 +971,11 @@ go_component_duplicate (GOComponent const *component)
g_value_unset (&value);
}
/* and now the data */
- go_component_get_data ((GOComponent *) component, (gpointer) &buf, &length, &clearfunc, &user_data);
- new_data = g_malloc (length);
- memcpy (new_data, buf, length);
- go_component_set_data (res, new_data, length);
+ new_data = g_malloc (component->length);
+ memcpy (new_data, component->data, component->length);
+ go_component_set_data (res, new_data, component->length);
res->destroy_notify = g_free;
res->destroy_data = new_data;
- if (clearfunc)
- clearfunc ((user_data)? user_data: buf);
res->priv = g_new (GOComponentPrivate, 1);
res->priv->is_inline = component->priv->is_inline;
return res;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]