[888] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[D-O-H] r876 - branches/barnowl_sqlite/owl

daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:10:48 2009

Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@mit.edu
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Tue, 15 Jan 2008 16:22:44 -0500 (EST)

Author: nelhage
Date: 2008-01-15 16:22:44 -0500 (Tue, 15 Jan 2008)
New Revision: 876

Modified:
   branches/barnowl_sqlite/owl/functions.c
   branches/barnowl_sqlite/owl/message.c
   branches/barnowl_sqlite/owl/owl.c
Log:
Fix a crash whenever we add a message to the messagelist

Modified: branches/barnowl_sqlite/owl/functions.c
===================================================================
--- branches/barnowl_sqlite/owl/functions.c	2008-01-15 19:40:02 UTC (rev 875)
+++ branches/barnowl_sqlite/owl/functions.c	2008-01-15 21:22:44 UTC (rev 876)
@@ -174,8 +174,8 @@
   owl_message_create_admin(m, header, body);
   
   /* add it to the global list and current view */
+  owl_view_consider_message(owl_global_get_current_view(&g), m);
   owl_messagelist_append_element(owl_global_get_msglist(&g), m);
-  owl_view_consider_message(owl_global_get_current_view(&g), m);
 
   /* do followlast if necessary */
   if (owl_global_should_followlast(&g)) owl_function_lastmsg_noredisplay();

Modified: branches/barnowl_sqlite/owl/message.c
===================================================================
--- branches/barnowl_sqlite/owl/message.c	2008-01-15 19:40:02 UTC (rev 875)
+++ branches/barnowl_sqlite/owl/message.c	2008-01-15 21:22:44 UTC (rev 876)
@@ -929,6 +929,16 @@
   if (ptr) ptr[0]='\0';
 }
 
+void owl_message_retain(owl_message *m)
+{
+  SvREFCNT_inc((SV*)m);
+}
+
+void owl_message_release(owl_message *m)
+{
+  SvREFCNT_dec((SV*)m);
+}
+
 void owl_message_free(owl_message *m)
 {
   owl_message_invalidate_format(m);

Modified: branches/barnowl_sqlite/owl/owl.c
===================================================================
--- branches/barnowl_sqlite/owl/owl.c	2008-01-15 19:40:02 UTC (rev 875)
+++ branches/barnowl_sqlite/owl/owl.c	2008-01-15 21:22:44 UTC (rev 876)
@@ -615,6 +615,8 @@
     return 0;
   }
 
+  owl_message_retain(m);
+
   /* add it to the global list */
   owl_messagelist_append_element(owl_global_get_msglist(&g), m);
   /* add it to any necessary views; right now there's only the current view */
@@ -681,6 +683,7 @@
 
   /* log the message if we need to */
   owl_log_message(m);
+  owl_message_release(m);
 
   return 1;
 }


home help back first fref pref prev next nref lref last post