[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