Blame SOURCES/0004-Correctly-check-whether-virtual-method-is-implemente.patch

d44312
From 3ce3334e9f64eb9eb9f6f52608ca00c2fb74b516 Mon Sep 17 00:00:00 2001
d44312
From: Tomas Popela <tpopela@redhat.com>
d44312
Date: Mon, 23 Jul 2018 10:30:35 +0200
d44312
Subject: [PATCH 04/17] Correctly check whether virtual method is implemented
d44312
 before calling it
d44312
d44312
yelp-3.28.1/libyelp/yelp-document.c:819:27: warning: Access to field 'request_page' results in a dereference of a null pointer (loaded from field 'g_class')
d44312
    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->request_page != NULL, FALSE);
d44312
d44312
yelp-3.28.1/libyelp/yelp-document.c:943:27: warning: Access to field 'read_contents' results in a dereference of a null pointer (loaded from field 'g_class')
d44312
    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->read_contents != NULL, NULL);
d44312
d44312
yelp-3.28.1/libyelp/yelp-document.c:1100:23: warning: Access to field 'finish_read' results in a dereference of a null pointer (loaded from field 'g_class')
d44312
    g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->finish_read != NULL);
d44312
d44312
yelp-3.28.1/libyelp/yelp-document.c:1141:27: warning: Access to field 'get_mime_type' results in a dereference of a null pointer (loaded from field 'g_class')
d44312
    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->get_mime_type != NULL, NULL);
d44312
d44312
yelp-3.28.1/libyelp/yelp-document.c:1173:23: warning: Access to field 'index' results in a dereference of a null pointer (loaded from field 'g_class')
d44312
    g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->index != NULL);
d44312
---
d44312
 libyelp/yelp-document.c | 56 ++++++++++++++++++++++++++++++-----------
d44312
 1 file changed, 41 insertions(+), 15 deletions(-)
d44312
d44312
diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c
d44312
index c1eec9cc..d832d1ed 100644
d44312
--- a/libyelp/yelp-document.c
d44312
+++ b/libyelp/yelp-document.c
d44312
@@ -815,17 +815,19 @@ yelp_document_request_page (YelpDocument         *document,
d44312
 			    gpointer              user_data,
d44312
 			    GDestroyNotify        notify)
d44312
 {
d44312
+    YelpDocumentClass *klass;
d44312
+
d44312
+    g_return_val_if_fail (document != NULL, FALSE);
d44312
     g_return_val_if_fail (YELP_IS_DOCUMENT (document), FALSE);
d44312
-    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->request_page != NULL, FALSE);
d44312
+
d44312
+    klass = YELP_DOCUMENT_GET_CLASS (document);
d44312
+    g_return_val_if_fail (klass != NULL, FALSE);
d44312
+    g_return_val_if_fail (klass->request_page != NULL, FALSE);
d44312
 
d44312
     debug_print (DB_FUNCTION, "entering\n");
d44312
 
d44312
-    return YELP_DOCUMENT_GET_CLASS (document)->request_page (document,
d44312
-							     page_id,
d44312
-							     cancellable,
d44312
-							     callback,
d44312
-							     user_data,
d44312
-							     notify);
d44312
+    return klass->request_page (document, page_id, cancellable, callback,
d44312
+                                user_data, notify);
d44312
 }
d44312
 
d44312
 static gboolean
d44312
@@ -939,10 +941,16 @@ const gchar *
d44312
 yelp_document_read_contents (YelpDocument *document,
d44312
 			     const gchar  *page_id)
d44312
 {
d44312
+    YelpDocumentClass *klass;
d44312
+
d44312
+    g_return_val_if_fail (document != NULL, NULL);
d44312
     g_return_val_if_fail (YELP_IS_DOCUMENT (document), NULL);
d44312
-    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->read_contents != NULL, NULL);
d44312
 
d44312
-    return YELP_DOCUMENT_GET_CLASS (document)->read_contents (document, page_id);
d44312
+    klass = YELP_DOCUMENT_GET_CLASS (document);
d44312
+    g_return_val_if_fail (klass != NULL, FALSE);
d44312
+    g_return_val_if_fail (klass->read_contents != NULL, FALSE);
d44312
+
d44312
+    return klass->read_contents (document, page_id);
d44312
 }
d44312
 
d44312
 static const gchar *
d44312
@@ -1096,10 +1104,16 @@ void
d44312
 yelp_document_finish_read (YelpDocument *document,
d44312
 			   const gchar  *contents)
d44312
 {
d44312
+    YelpDocumentClass *klass;
d44312
+
d44312
+    g_return_if_fail (document != NULL);
d44312
     g_return_if_fail (YELP_IS_DOCUMENT (document));
d44312
-    g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->finish_read != NULL);
d44312
 
d44312
-    YELP_DOCUMENT_GET_CLASS (document)->finish_read (document, contents);
d44312
+    klass = YELP_DOCUMENT_GET_CLASS (document);
d44312
+    g_return_if_fail (klass != NULL);
d44312
+    g_return_if_fail (klass->finish_read != NULL);
d44312
+
d44312
+    klass->finish_read (document, contents);
d44312
 }
d44312
 
d44312
 static void
d44312
@@ -1137,10 +1151,16 @@ gchar *
d44312
 yelp_document_get_mime_type (YelpDocument *document,
d44312
 			     const gchar  *page_id)
d44312
 {
d44312
+    YelpDocumentClass *klass;
d44312
+
d44312
+    g_return_val_if_fail (document != NULL, NULL);
d44312
     g_return_val_if_fail (YELP_IS_DOCUMENT (document), NULL);
d44312
-    g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->get_mime_type != NULL, NULL);
d44312
 
d44312
-    return YELP_DOCUMENT_GET_CLASS (document)->get_mime_type (document, page_id);
d44312
+    klass = YELP_DOCUMENT_GET_CLASS (document);
d44312
+    g_return_val_if_fail (klass != NULL, NULL);
d44312
+    g_return_val_if_fail (klass->get_mime_type != NULL, FALSE);
d44312
+
d44312
+    return klass->get_mime_type (document, page_id);
d44312
 }
d44312
 
d44312
 static gchar *
d44312
@@ -1169,10 +1189,16 @@ document_get_mime_type (YelpDocument *document,
d44312
 void
d44312
 yelp_document_index (YelpDocument *document)
d44312
 {
d44312
+    YelpDocumentClass *klass;
d44312
+
d44312
+    g_return_if_fail (document != NULL);
d44312
     g_return_if_fail (YELP_IS_DOCUMENT (document));
d44312
-    g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->index != NULL);
d44312
 
d44312
-    YELP_DOCUMENT_GET_CLASS (document)->index (document);
d44312
+    klass = YELP_DOCUMENT_GET_CLASS (document);
d44312
+    g_return_if_fail (klass != NULL);
d44312
+    g_return_if_fail (klass->index != NULL);
d44312
+
d44312
+    klass->index (document);
d44312
 }
d44312
 
d44312
 static void
d44312
-- 
d44312
2.19.1
d44312