* fhandler.cc (fhandler_base::close_with_arch): Make sure that the archetype is
deleted when close_with_arch is referenced *via* the archetype.
This commit is contained in:
parent
2404223df6
commit
470b8544e8
|
@ -1,3 +1,9 @@
|
|||
2013-07-03 Christopher Faylor <me.cygwin2013@cgf.cx>
|
||||
|
||||
* fhandler.cc (fhandler_base::close_with_arch): Make sure that the
|
||||
archetype is deleted when close_with_arch is referenced *via* the
|
||||
archetype.
|
||||
|
||||
2013-06-28 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* path.cc (find_fast_cwd_pointer): Use gas syntax for assembler
|
||||
|
|
|
@ -1076,32 +1076,30 @@ fhandler_base::close_with_arch ()
|
|||
fhandler_base *fh;
|
||||
if (usecount)
|
||||
{
|
||||
if (!--usecount)
|
||||
debug_printf ("closing passed in archetype, usecount %d", usecount);
|
||||
else
|
||||
/* This was the archetype itself. */
|
||||
if (--usecount)
|
||||
{
|
||||
debug_printf ("not closing passed in archetype, usecount %d", usecount);
|
||||
debug_printf ("not closing passed in archetype %p, usecount %d", archetype, usecount);
|
||||
return 0;
|
||||
}
|
||||
fh = this;
|
||||
debug_printf ("closing passed in archetype %p, usecount %d", archetype, usecount);
|
||||
/* Set archetype temporarily so that it will eventually be deleted. */
|
||||
archetype = fh = this;
|
||||
}
|
||||
else if (!archetype)
|
||||
fh = this;
|
||||
else if (archetype_usecount (-1) == 0)
|
||||
{
|
||||
debug_printf ("closing archetype");
|
||||
fh = archetype;
|
||||
}
|
||||
else
|
||||
{
|
||||
cleanup ();
|
||||
if (archetype_usecount (-1) == 0)
|
||||
{
|
||||
debug_printf ("closing archetype");
|
||||
fh = archetype;
|
||||
}
|
||||
else
|
||||
{
|
||||
debug_printf ("not closing archetype");
|
||||
return 0;
|
||||
}
|
||||
debug_printf ("not closing archetype");
|
||||
return 0;
|
||||
}
|
||||
|
||||
cleanup ();
|
||||
res = fh->close ();
|
||||
if (archetype)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue