У меня есть этот бит кода, который работает нормально:
WebKit::WebView web;
// later:
{
Glib::RefPtr<WebKit::WebSettings> settings = WebKit::WebSettings::create();
// do some stuff to the object
web.set_settings(settings);
}
Через некоторое время, когда web
все еще находится в области видимости, но settings
выпал из области видимости, я делаю следующее:
Glib::RefPtr<WebKit::WebSettings> settings = web.get_settings();
Этот должен восстановить исходный объект настроек, созданный выше. Однако в действительности получается, что я получаю SIGSEGV в Glib::wrap_auto
(вызывается из get_settings
) со следующим выводом:
GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed
Я предполагаю, что каким-то образом, когда первый указатель settings
выпал из области видимости, он разрушал базовый объект, несмотря на то, что он был назначен свойству другого объекта. Почему это происходит? Предположительно, я делаю что-то не так, но код кажется мне вменяемым. (Я предполагаю, что назначение объекта свойству увеличило бы количество ссылок на объект C.)