From 8af10d54e7256d8db1b7a92370c857544bbfdf9f Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Sat, 13 Jan 2007 01:17:19 +0000 Subject: overwritten heap, wrong casts fixed. Closes SF#1575829 (bzr r2198) --- src/ui/widget/entity-entry.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/ui/widget/entity-entry.cpp') diff --git a/src/ui/widget/entity-entry.cpp b/src/ui/widget/entity-entry.cpp index 6563040dc..980d225b2 100644 --- a/src/ui/widget/entity-entry.cpp +++ b/src/ui/widget/entity-entry.cpp @@ -49,9 +49,10 @@ EntityEntry::create (rdf_work_entity_t* ent, Gtk::Tooltips& tt, Registry& wr) obj = new EntityMultiLineEntry (ent, tt, wr); break; default: - g_warning ("Can't happen."); + g_warning ("An unknown RDF format was requested."); } + g_assert (obj); obj->_label.show(); return obj; } @@ -78,14 +79,14 @@ EntityLineEntry::EntityLineEntry (rdf_work_entity_t* ent, Gtk::Tooltips& tt, Reg EntityLineEntry::~EntityLineEntry() { - delete reinterpret_cast(_packable); + delete static_cast(_packable); } void EntityLineEntry::update (SPDocument *doc) { const char *text = rdf_get_work_entity (doc, _entity); - reinterpret_cast(_packable)->set_text (text ? text : ""); + static_cast(_packable)->set_text (text ? text : ""); } void @@ -95,8 +96,8 @@ EntityLineEntry::on_changed() _wr->setUpdating (true); SPDocument *doc = SP_ACTIVE_DOCUMENT; - char const *text = reinterpret_cast(_packable)->get_text().c_str(); - if (rdf_set_work_entity (doc, _entity, text)) + Glib::ustring text = static_cast(_packable)->get_text(); + if (rdf_set_work_entity (doc, _entity, text.c_str())) sp_document_done (doc, SP_VERB_NONE, /* TODO: annotate */ "entity-entry.cpp:101"); _wr->setUpdating (false); @@ -119,15 +120,15 @@ EntityMultiLineEntry::EntityMultiLineEntry (rdf_work_entity_t* ent, Gtk::Tooltip EntityMultiLineEntry::~EntityMultiLineEntry() { - delete reinterpret_cast(_packable); + delete static_cast(_packable); } void EntityMultiLineEntry::update (SPDocument *doc) { const char *text = rdf_get_work_entity (doc, _entity); - Gtk::ScrolledWindow *s = reinterpret_cast(_packable); - Gtk::TextView *tv = reinterpret_cast(s->get_child()); + Gtk::ScrolledWindow *s = static_cast(_packable); + Gtk::TextView *tv = static_cast(s->get_child()); tv->get_buffer()->set_text (text ? text : ""); } @@ -138,10 +139,10 @@ EntityMultiLineEntry::on_changed() _wr->setUpdating (true); SPDocument *doc = SP_ACTIVE_DOCUMENT; - Gtk::ScrolledWindow *s = reinterpret_cast(_packable); - Gtk::TextView *tv = reinterpret_cast(s->get_child()); - char const *text = tv->get_buffer()->get_text().c_str(); - if (rdf_set_work_entity (doc, _entity, text)) + Gtk::ScrolledWindow *s = static_cast(_packable); + Gtk::TextView *tv = static_cast(s->get_child()); + Glib::ustring text = tv->get_buffer()->get_text(); + if (rdf_set_work_entity (doc, _entity, text.c_str())) sp_document_done (doc, SP_VERB_NONE, /* TODO: annotate */ "entity-entry.cpp:146"); _wr->setUpdating (false); -- cgit v1.2.3