scope(exit): exception safety article example incorrect?

Tim Keating holyspamster at gmail.com
Tue Apr 3 15:14:16 PDT 2007


The article on exception safety 
(http://www.digitalmars.com/d/exception-safe.html) uses this example:

void abc()
{
     Mutex m = new Mutex;

     lock(m);	// lock the mutex
     scope(exit) unlock(m);	// unlock on leaving the scope

     foo();	// do processing
}

However, it seems to me this won't actually work as written. Doesn't any 
variable used for scoping need to be declared either static or outside 
the scope it's protecting? As written, it looks to me as though a new 
local m will be created on the stack each time a thread enters this 
func, which won't protect anything!

TimK



More information about the Digitalmars-d mailing list