1
0
mirror of https://gitlab.gnome.org/GNOME/evince synced 2024-06-30 22:54:23 +00:00

libdocument: simplify freeing memory by better exploiting glib functions

Mostly g_clear_object and g_clear_pointer. But also some small
simplifications depending on the context.
This commit is contained in:
Pablo Correa Gómez 2023-03-10 00:50:59 +01:00
parent 33b251b6e1
commit 273511ac39
No known key found for this signature in database
GPG Key ID: 7A342565FF635F79
13 changed files with 41 additions and 172 deletions

View File

@ -145,25 +145,10 @@ ev_annotation_finalize (GObject *object)
{ {
EvAnnotation *annot = EV_ANNOTATION (object); EvAnnotation *annot = EV_ANNOTATION (object);
if (annot->page) { g_clear_object (&annot->page);
g_object_unref (annot->page); g_clear_pointer (&annot->contents, g_free);
annot->page = NULL; g_clear_pointer (&annot->name, g_free);
} g_clear_pointer (&annot->modified, g_free);
if (annot->contents) {
g_free (annot->contents);
annot->contents = NULL;
}
if (annot->name) {
g_free (annot->name);
annot->name = NULL;
}
if (annot->modified) {
g_free (annot->modified);
annot->modified = NULL;
}
G_OBJECT_CLASS (ev_annotation_parent_class)->finalize (object); G_OBJECT_CLASS (ev_annotation_parent_class)->finalize (object);
} }
@ -1279,10 +1264,7 @@ ev_annotation_attachment_finalize (GObject *object)
{ {
EvAnnotationAttachment *annot = EV_ANNOTATION_ATTACHMENT (object); EvAnnotationAttachment *annot = EV_ANNOTATION_ATTACHMENT (object);
if (annot->attachment) { g_clear_object (&annot->attachment);
g_object_unref (annot->attachment);
annot->attachment = NULL;
}
G_OBJECT_CLASS (ev_annotation_attachment_parent_class)->finalize (object); G_OBJECT_CLASS (ev_annotation_attachment_parent_class)->finalize (object);
} }

View File

@ -70,35 +70,15 @@ ev_attachment_finalize (GObject *object)
EvAttachment *attachment = EV_ATTACHMENT (object); EvAttachment *attachment = EV_ATTACHMENT (object);
EvAttachmentPrivate *priv = GET_PRIVATE (attachment); EvAttachmentPrivate *priv = GET_PRIVATE (attachment);
if (priv->name) { g_clear_pointer (&priv->name, g_free);
g_free (priv->name); g_clear_pointer (&priv->description, g_free);
priv->name = NULL; g_clear_pointer (&priv->data, g_free);
} g_clear_pointer (&priv->mime_type, g_free);
g_clear_object (&priv->app);
if (priv->description) {
g_free (priv->description);
priv->description = NULL;
}
if (priv->data) {
g_free (priv->data);
priv->data = NULL;
}
if (priv->mime_type) {
g_free (priv->mime_type);
priv->mime_type = NULL;
}
if (priv->app) {
g_object_unref (priv->app);
priv->app = NULL;
}
if (priv->tmp_file) { if (priv->tmp_file) {
ev_tmp_file_unlink (priv->tmp_file); ev_tmp_file_unlink (priv->tmp_file);
g_object_unref (priv->tmp_file); g_clear_object (&priv->tmp_file);
priv->tmp_file = NULL;
} }
G_OBJECT_CLASS (ev_attachment_parent_class)->finalize (object); G_OBJECT_CLASS (ev_attachment_parent_class)->finalize (object);

View File

@ -100,10 +100,7 @@ _ev_debug_init (void)
void void
_ev_debug_shutdown (void) _ev_debug_shutdown (void)
{ {
if (timers) { g_clear_pointer (&timers, g_hash_table_destroy);
g_hash_table_destroy (timers);
timers = NULL;
}
} }
void void

View File

@ -265,17 +265,10 @@ _ev_document_factory_init (void)
void void
_ev_document_factory_shutdown (void) _ev_document_factory_shutdown (void)
{ {
g_list_foreach (ev_backends_list, (GFunc) _ev_backend_info_unref, NULL); g_list_free_full (g_steal_pointer (&ev_backends_list), (GDestroyNotify) _ev_backend_info_unref);
g_list_free (ev_backends_list);
ev_backends_list = NULL;
if (ev_module_hash != NULL) { g_clear_pointer (&ev_module_hash, g_hash_table_unref);
g_hash_table_unref (ev_module_hash); g_clear_pointer (&ev_backends_dir, g_free);
ev_module_hash = NULL;
}
g_free (ev_backends_dir);
ev_backends_dir = NULL;
} }
/** /**
@ -336,8 +329,7 @@ ev_document_factory_get_document_full (const char *uri,
return document; return document;
} }
g_object_unref (document); g_clear_object (&document);
document = NULL;
} }
/* Try again with slow mime detection */ /* Try again with slow mime detection */
@ -381,9 +373,7 @@ ev_document_factory_get_document_full (const char *uri,
return document; return document;
} }
g_object_unref (document); g_clear_object (&document);
document = NULL;
g_propagate_error (error, err); g_propagate_error (error, err);
} }

View File

@ -113,27 +113,11 @@ ev_document_finalize (GObject *object)
{ {
EvDocument *document = EV_DOCUMENT (object); EvDocument *document = EV_DOCUMENT (object);
if (document->priv->uri) { g_clear_pointer (&document->priv->uri, g_free);
g_free (document->priv->uri); g_clear_pointer (&document->priv->page_sizes, g_free);
document->priv->uri = NULL;
}
if (document->priv->page_sizes) {
g_free (document->priv->page_sizes);
document->priv->page_sizes = NULL;
}
g_clear_pointer (&document->priv->page_labels, g_strfreev); g_clear_pointer (&document->priv->page_labels, g_strfreev);
g_clear_pointer (&document->priv->info, ev_document_info_free);
if (document->priv->info) { g_clear_pointer (&document->priv->synctex_scanner, synctex_scanner_free);
ev_document_info_free (document->priv->info);
document->priv->info = NULL;
}
if (document->priv->synctex_scanner) {
synctex_scanner_free (document->priv->synctex_scanner);
document->priv->synctex_scanner = NULL;
}
G_OBJECT_CLASS (ev_document_parent_class)->finalize (object); G_OBJECT_CLASS (ev_document_parent_class)->finalize (object);
} }

View File

@ -121,8 +121,7 @@ _ev_file_helpers_shutdown (void)
if (tmp_dir != NULL) if (tmp_dir != NULL)
g_rmdir (tmp_dir); g_rmdir (tmp_dir);
g_free (tmp_dir); g_clear_pointer (&tmp_dir, g_free);
tmp_dir = NULL;
} }
/** /**

View File

@ -64,9 +64,7 @@ ev_form_field_finalize (GObject *object)
EvFormField *field = EV_FORM_FIELD (object); EvFormField *field = EV_FORM_FIELD (object);
EvFormFieldPrivate *priv = GET_FIELD_PRIVATE (field); EvFormFieldPrivate *priv = GET_FIELD_PRIVATE (field);
g_object_unref (field->page); g_clear_object (&field->page);
field->page = NULL;
g_clear_object (&field->activation_link); g_clear_object (&field->activation_link);
g_clear_pointer (&priv->alt_ui_name, g_free); g_clear_pointer (&priv->alt_ui_name, g_free);
@ -137,10 +135,7 @@ ev_form_field_text_finalize (GObject *object)
{ {
EvFormFieldText *field_text = EV_FORM_FIELD_TEXT (object); EvFormFieldText *field_text = EV_FORM_FIELD_TEXT (object);
if (field_text->text) { g_clear_pointer (&field_text->text, g_free);
g_free (field_text->text);
field_text->text = NULL;
}
(* G_OBJECT_CLASS (ev_form_field_text_parent_class)->finalize) (object); (* G_OBJECT_CLASS (ev_form_field_text_parent_class)->finalize) (object);
} }
@ -173,15 +168,8 @@ ev_form_field_choice_finalize (GObject *object)
{ {
EvFormFieldChoice *field_choice = EV_FORM_FIELD_CHOICE (object); EvFormFieldChoice *field_choice = EV_FORM_FIELD_CHOICE (object);
if (field_choice->selected_items) { g_clear_pointer (&field_choice->selected_items, g_list_free);
g_list_free (field_choice->selected_items); g_clear_pointer (&field_choice->text, g_free);
field_choice->selected_items = NULL;
}
if (field_choice->text) {
g_free (field_choice->text);
field_choice->text = NULL;
}
(* G_OBJECT_CLASS (ev_form_field_choice_parent_class)->finalize) (object); (* G_OBJECT_CLASS (ev_form_field_choice_parent_class)->finalize) (object);
} }

View File

@ -40,10 +40,7 @@ ev_image_finalize (GObject *object)
{ {
EvImage *image = EV_IMAGE (object); EvImage *image = EV_IMAGE (object);
if (image->priv->pixbuf) { g_clear_object (&image->priv->pixbuf);
g_object_unref (image->priv->pixbuf);
image->priv->pixbuf = NULL;
}
if (image->priv->tmp_uri) { if (image->priv->tmp_uri) {
gchar *filename; gchar *filename;
@ -51,8 +48,7 @@ ev_image_finalize (GObject *object)
filename = g_filename_from_uri (image->priv->tmp_uri, NULL, NULL); filename = g_filename_from_uri (image->priv->tmp_uri, NULL, NULL);
ev_tmp_filename_unlink (filename); ev_tmp_filename_unlink (filename);
g_free (filename); g_free (filename);
g_free (image->priv->tmp_uri); g_clear_pointer (&image->priv->tmp_uri, g_free);
image->priv->tmp_uri = NULL;
} }
(* G_OBJECT_CLASS (ev_image_parent_class)->finalize) (object); (* G_OBJECT_CLASS (ev_image_parent_class)->finalize) (object);

View File

@ -302,48 +302,15 @@ ev_link_action_finalize (GObject *object)
g_clear_object (&priv->dest); g_clear_object (&priv->dest);
if (priv->uri) { g_clear_pointer (&priv->uri, g_free);
g_free (priv->uri); g_clear_pointer (&priv->filename, g_free);
priv->uri = NULL; g_clear_pointer (&priv->params, g_free);
} g_clear_pointer (&priv->name, g_free);
if (priv->filename) { g_list_free_full (g_steal_pointer (&priv->show_list), g_object_unref);
g_free (priv->filename); g_list_free_full (g_steal_pointer (&priv->hide_list), g_object_unref);
priv->filename = NULL; g_list_free_full (g_steal_pointer (&priv->toggle_list), g_object_unref);
} g_list_free_full (g_steal_pointer (&priv->reset_fields), g_free);
if (priv->params) {
g_free (priv->params);
priv->params = NULL;
}
if (priv->name) {
g_free (priv->name);
priv->name = NULL;
}
if (priv->show_list) {
g_list_foreach (priv->show_list, (GFunc)g_object_unref, NULL);
g_list_free (priv->show_list);
priv->show_list = NULL;
}
if (priv->hide_list) {
g_list_foreach (priv->hide_list, (GFunc)g_object_unref, NULL);
g_list_free (priv->hide_list);
priv->hide_list = NULL;
}
if (priv->toggle_list) {
g_list_foreach (priv->toggle_list, (GFunc)g_object_unref, NULL);
g_list_free (priv->toggle_list);
priv->toggle_list = NULL;
}
if (priv->reset_fields) {
g_list_free_full (priv->reset_fields, g_free);
priv->reset_fields = NULL;
}
G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object); G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object);
} }

View File

@ -255,14 +255,8 @@ ev_link_dest_finalize (GObject *object)
priv = EV_LINK_DEST (object)->priv; priv = EV_LINK_DEST (object)->priv;
if (priv->named) { g_clear_pointer (&priv->named, g_free);
g_free (priv->named); g_clear_pointer (&priv->page_label, g_free);
priv->named = NULL;
}
if (priv->page_label) {
g_free (priv->page_label);
priv->page_label = NULL;
}
G_OBJECT_CLASS (ev_link_dest_parent_class)->finalize (object); G_OBJECT_CLASS (ev_link_dest_parent_class)->finalize (object);
} }

View File

@ -120,11 +120,7 @@ ev_link_finalize (GObject *object)
priv = EV_LINK (object)->priv; priv = EV_LINK (object)->priv;
if (priv->title) { g_clear_pointer (&priv->title, g_free);
g_free (priv->title);
priv->title = NULL;
}
g_clear_object (&priv->action); g_clear_object (&priv->action);
G_OBJECT_CLASS (ev_link_parent_class)->finalize (object); G_OBJECT_CLASS (ev_link_parent_class)->finalize (object);

View File

@ -119,8 +119,7 @@ ev_module_unload (GTypeModule *gmodule)
{ {
EvModule *module = EV_MODULE (gmodule); EvModule *module = EV_MODULE (gmodule);
g_module_close (module->library); g_clear_pointer (&module->library, g_module_close);
module->library = NULL;
} }
const gchar * const gchar *

View File

@ -36,10 +36,7 @@ ev_render_context_dispose (GObject *object)
rc = (EvRenderContext *) object; rc = (EvRenderContext *) object;
if (rc->page) { g_clear_object (&rc->page);
g_object_unref (rc->page);
rc->page = NULL;
}
(* G_OBJECT_CLASS (ev_render_context_parent_class)->dispose) (object); (* G_OBJECT_CLASS (ev_render_context_parent_class)->dispose) (object);
} }