On 2/24/07, Roman Yakovenko <roman.yakovenko@gmail.com> wrote:
On 2/24/07, Gustavo Carneiro <gjcarneiro@gmail.com> wrote:
> On 2/24/07, Gustavo Carneiro <gjcarneiro@gmail.com> wrote:
> >
> > On 2/22/07, Roman Yakovenko < roman.yakovenko@gmail.com> wrote:
> >
> >
> >
> > > Also I added new functionality, which allows you to implement the patch:
> > >
> http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/unittests/transfer_ownership_tester.py?view=markup
> > >
> http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/unittests/data/transfer_ownership_to_be_exported.hpp?view=markup
> >
> >
> >   Thanks, it works perfectly! :-)
>
>   Bah, I spoke a little too soon :P
>
>   It seems that  when  the virtual method is protected, as shown in the
> patch below, the " method.add_override_precall_code()" part
> stops having any effect on the generated virtual method code, and so the
> INCREF is not inserted, making the memory problem come back.  And it so
> happens that the code I am trying to wrap hits precisely this bug... what a
> bad luck :(
>
>
> --- simulator.hpp       2007-02-19 12:55:53.000000000 +0000
>  +++ simulator-new.hpp   2007-02-24 18:29: 12.000000000 +0000
> @@ -7,6 +7,10 @@ namespace ns3 {
>   class EventImpl
>  {
>   public:
> +    void Invoke(void) {
>  +        Notify();
> +    }
>  +protected:
>      virtual void Notify() = 0;
>   };
>
>  @@ -18,7 +22,7 @@ public:
>      };
>
>      static void Run() {
>  -        Simulator::event->Notify();
> +        Simulator::event->Invoke();
>           delete Simulator::event;
>          Simulator::event = 0;
>      };

My fault and it is fixed now in SVN.

  It _really_ works now, thanks! :-)

--
Gustavo J. A. M. Carneiro
"The universe is always one step beyond logic."