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