У меня есть этот кусок кода, который работает отлично:SIGSEGV после Glib :: RefPtr выходит за рамки?
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.)
Да, это похоже. Недавно я возился с обновлением привязок, чтобы исправить эту проблему, а также включить новые функции webkit в противном случае. – Miral