[omniORB] method call in nbufferedstream.cc
David Riddoch
djr@orl.co.uk
Tue, 12 Jan 1999 09:12:29 +0000 (GMT)
On Mon, 11 Jan 1999, David Byron wrote:
> In nbufferedstream.cc, I'm having a problem compiling the following
> line of code from NetBufferedStream::WrUnlock()
>
> Strand_Sync::WrUnlock();
>
> Strand_Sync comes from:
>
> typedef Strand::Sync Strand_Sync;
>
> in rope.h.
>
> Anyway, there is a static function in class Strand::Sync called
> WrUnlock. It's signature is:
>
> static void WrUnlock(Strand* s);
>
> >From this, it would appear that the call in nbufferedstream.cc is
> missing an argument. Another possibility is that the desired method is:
>
> void WrUnlock(_CORBA_Boolean held_rope_mutex=0);
>
> which is a protected method in class Strand::Sync.
Yes its this one.
> If this is the desired method, then the Strand_Sync:: would be removed.
> Doing this causes the code to compile fine. To note, I'm using the
> Metaware High C/C++ compiler...
But Strand_Sync::WrUnlock() is being called from
NetBufferedStream::WrUnlock(). If you remove the Strand_Sync:: then you
will get a recursive call back into NetBufferedStream::WrUnlock().
Looks like you have a compiler bug. To work-around the problem try:
Strand::Sync::WrUnlock();
Hope this solves the problem.
David