[omniNotify] new omninotify bug #1561866

ronan ronan at tampabay.rr.com
Tue Sep 19 23:18:46 BST 2006


I just created a new bug tracker entry (1561866).  I think that it is 
clear.  I have fixed the problem, not only avoiding the segfault, but 
providing the missing functionality.  The only changes were to the 
FilterAdmin (and a new field in the struct that holds filter info).  If 
you want me to check-in to another branch or tag, let me know; I think 
that I have commit permissions.  Here is a diff:

Index: lib/FilterAdmin_i.cc
===================================================================
RCS file: /cvsroot/omninotify/omniNotify/lib/Attic/FilterAdmin_i.cc,v
retrieving revision 1.43.2.3
diff -r1.43.2.3 FilterAdmin_i.cc
329c329
<   RDI_Assert(fltr, "Filter was not created by READY\n");
---
 >   //RDI_Assert(fltr, "Filter was not created by READY\n");
333c333,338
<   entry.callback_id = fltr->attach_callback_i(held, filter_holder, 
need_schange);
---
 >   if (fltr)
 >      entry.callback_id = fltr->attach_callback_i(held, filter_holder, 
need_schange);
 >   else
 >      entry.remote_filter = CosNF::Filter::_duplicate(new_filter);
 >
 >
385c390,394
<     CosNF::Filter_var res = WRAPPED_IMPL2OREF(CosNF::Filter, 
entry.filter);
---
 >     CosNF::Filter_var res;
 >     if (entry.filter)
 >        res = WRAPPED_IMPL2OREF(CosNF::Filter, entry.filter);
 >     else
 >        res = entry.remote_filter;
421c430,431
<   f->fadmin_removal_i(held, entry.callback_id, filter_holder);
---
 >   if (f)
 >      f->fadmin_removal_i(held, entry.callback_id, filter_holder);
424c434,435
<   WRAPPED_RELEASE_IMPL(f);
---
 >   if (f)
 >      WRAPPED_RELEASE_IMPL(f);
438,439c449,453
<     entry.filter->fadmin_removal_i(held, entry.callback_id, 
filter_holder);
<     WRAPPED_RELEASE_IMPL(entry.filter);
---
 >     if (entry.filter)
 >     {
 >        entry.filter->fadmin_removal_i(held, entry.callback_id, 
filter_holder);
 >        WRAPPED_RELEASE_IMPL(entry.filter);
 >     }
456c470,473
<       entry.filter->out_info_descr(str);
---
 >       if (entry.filter)
 >          entry.filter->out_info_descr(str);
 >       else
 >          str << "Remote Filter \n";
Index: include/CosNotifyFilter_i.h
===================================================================
RCS file: /cvsroot/omninotify/omniNotify/include/Attic/CosNotifyFilter_i.h,v
retrieving revision 1.53.2.3
diff -r1.53.2.3 CosNotifyFilter_i.h
454a455
 >   CosNF::Filter_var    remote_filter;





More information about the omninotify-list mailing list