[gtksourceviewmm/devel] Fix possible NULL pointers dereferences.



commit 804027208476174649df8e747a9ba4ebdefe677c
Author: Krzesimir Nowak <qdlacz gmail com>
Date:   Wed Jan 13 00:30:41 2010 +0100

    Fix possible NULL pointers dereferences.
    
    * gtksourceview/src/sourcecompletioncontext.hg: Use Glib::unwrap
    instead of ->.
    * gtksourceview/src/sourcemark.ccg: Insert checks for NULL pointer
    before calling reference on them.

 gtksourceview/src/sourcecompletioncontext.hg |    2 +-
 gtksourceview/src/sourcemark.ccg             |   20 ++++++++++++++++----
 2 files changed, 17 insertions(+), 5 deletions(-)
---
diff --git a/gtksourceview/src/sourcecompletioncontext.hg b/gtksourceview/src/sourcecompletioncontext.hg
index aa1e77a..768aaa1 100644
--- a/gtksourceview/src/sourcecompletioncontext.hg
+++ b/gtksourceview/src/sourcecompletioncontext.hg
@@ -42,7 +42,7 @@ class SourceCompletionContext : public Glib::Object
 {
   _CLASS_GOBJECT(SourceCompletionContext, GtkSourceCompletionContext, GTK_SOURCE_COMPLETION_CONTEXT, Glib::Object, GObject)
 public:
-#m4 _CONVERSION(`const Glib::RefPtr<SourceCompletionProvider>&',`struct _GtkSourceCompletionProvider*',`($3)->gobj()')
+#m4 _CONVERSION(`const Glib::RefPtr<SourceCompletionProvider>&',`struct _GtkSourceCompletionProvider*',`Glib::unwrap($3)')
 #m4 _CONVERSION(`const Glib::ListHandle<Glib::RefPtr<SourceCompletionProposal> >&',`GList*',`($3).data()')
   _WRAP_METHOD(void add_proposals(const Glib::RefPtr<SourceCompletionProvider>& provider, const Glib::ListHandle<Glib::RefPtr<SourceCompletionProposal> >& proposals, bool finished), gtk_source_completion_context_add_proposals)
 
diff --git a/gtksourceview/src/sourcemark.ccg b/gtksourceview/src/sourcemark.ccg
index e2851ae..60493c2 100644
--- a/gtksourceview/src/sourcemark.ccg
+++ b/gtksourceview/src/sourcemark.ccg
@@ -32,28 +32,40 @@ SourceMark::SourceMark(const Glib::ustring& category, const Glib::ustring& name)
 Glib::RefPtr<SourceMark> SourceMark::next()
 {
   Glib::RefPtr<SourceMark> result = Glib::wrap (gtk_source_mark_next(const_cast<GtkSourceMark*>(gobj()), NULL));
-  result->reference();
+  if (result)
+  {
+    result->reference();
+  }
   return result;
 }
 
 Glib::RefPtr<const SourceMark> SourceMark::next() const
 {
   Glib::RefPtr<const SourceMark> result = Glib::wrap (gtk_source_mark_next(const_cast<GtkSourceMark*>(gobj()), NULL));
-  result->reference();
+  if (result)
+  {
+    result->reference();
+  }
   return result;
 }
 
 Glib::RefPtr<SourceMark> SourceMark::prev()
 {
   Glib::RefPtr<SourceMark> result =  Glib::wrap (gtk_source_mark_prev(const_cast<GtkSourceMark*>(gobj()), NULL));
-  result->reference();
+  if (result)
+  {
+    result->reference();
+  }
   return result;
 }
 
 Glib::RefPtr<const SourceMark> SourceMark::prev() const
 {
   Glib::RefPtr<const SourceMark> result =  Glib::wrap (gtk_source_mark_prev(const_cast<GtkSourceMark*>(gobj()), NULL));
-  result->reference();
+  if (result)
+  {
+    result->reference();
+  }
   return result;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]