PsppireSpreadsheetModel: Take reference to underlying model
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 19 Sep 2015 18:02:03 +0000 (20:02 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 19 Sep 2015 18:02:03 +0000 (20:02 +0200)
src/ui/gui/psppire-spreadsheet-model.c

index d02c1c558c94bcc937ea16881849e95bac4a17f3..bd186ca46d4f8ed57bd541467cdb8a5c3915a0b5 100644 (file)
@@ -106,6 +106,7 @@ psppire_spreadsheet_model_set_property (GObject * object,
     {
     case PROP_SPREADSHEET:
       spreadsheetModel->spreadsheet = g_value_get_pointer (value);
+      spreadsheet_ref (spreadsheetModel->spreadsheet);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -117,6 +118,14 @@ psppire_spreadsheet_model_set_property (GObject * object,
 static void
 psppire_spreadsheet_model_dispose (GObject * object)
 {
+  PsppireSpreadsheetModel *spreadsheetModel = PSPPIRE_SPREADSHEET_MODEL (object);
+
+  if (!spreadsheetModel->dispose_has_run)
+    {
+      spreadsheet_unref (spreadsheetModel->spreadsheet);
+
+      spreadsheetModel->dispose_has_run = TRUE;
+    }
 }
 
 static void