Jump to page: 1 2
Thread overview
[Issue 3516] New: Destructor not called on temporaries
Nov 16, 2009
Bartosz Milewski
Nov 17, 2009
Bartosz Milewski
Jan 18, 2010
Don
May 30, 2010
Brad Roberts
Jul 06, 2010
Lionello Lunesu
Jul 10, 2010
Adrian Matoga
Aug 23, 2010
SHOO
Sep 20, 2010
andy@aligature.com
Sep 22, 2010
Don
Nov 14, 2010
Max Samukha
Apr 26, 2011
Vladimir
Jun 27, 2011
Don
November 16, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3516

           Summary: Destructor not called on temporaries
           Product: D
           Version: 2.032
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: bartosz@relisoft.com


--- Comment #0 from Bartosz Milewski <bartosz@relisoft.com> 2009-11-16 14:32:39 PST ---
Created an attachment (id=497)
Reference counting doesn't work when temporaries created

Function f returns (by value) a struct that has a destructor. If I explicitly assign the result of f to a temporary, that temporary is destroyed at the end of scope. If I don't assign it, the hidden temporary is not destroyed. In the attached example this screws up reference counting.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 17, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3516



--- Comment #1 from Bartosz Milewski <bartosz@relisoft.com> 2009-11-16 16:31:43 PST ---
*** Issue 3518 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 29, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Leandro Motta Barros <lmb@stackedboxes.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |lmb@stackedboxes.org


--- Comment #2 from Leandro Motta Barros <lmb@stackedboxes.org> 2009-11-29 03:21:36 PST ---
I don't know if this is useful information, but I've been bitten by this same bug under Linux with DMD 2.036.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
January 18, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|major                       |critical


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 30, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Brad Roberts <braddr@puremagic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |braddr@puremagic.com


--- Comment #3 from Brad Roberts <braddr@puremagic.com> 2010-05-30 15:59:09 PDT ---
Reduced test case:
extern(C) int printf(const char*, ...);

int numctor, numdtor;

struct Tid
{
    this(int i) { ++numctor; }
    ~this() { ++numdtor; }
}

Tid f() { return Tid(1); }

// This temporary is destroyed
void test1() { Tid tid = f(); }

// This (invisible) temporary is never destroyed
void test2() { f(); }

void main()
{
    numctor = numdtor = 0;
    test1();
    printf("numctor = %d, numdtor = %d\n", numctor, numdtor);
    assert(numctor == 1);
    assert(numdtor == 1);

    numctor = numdtor = 0;
    test2();
    printf("numctor = %d, numdtor = %d\n", numctor, numdtor);
    assert(numctor == 1);
    assert(numdtor == 1);
}

Current results:
numctor = 1, numdtor = 1
numctor = 1, numdtor = 0
core.exception.AssertError@bug3516(31): Assertion failure

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 06, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Lionello Lunesu <lio+bugzilla@lunesu.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yaochenghan@gmail.com


--- Comment #4 from Lionello Lunesu <lio+bugzilla@lunesu.com> 2010-07-06 01:34:59 PDT ---
*** Issue 3285 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 10, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Adrian Matoga <epi@atari8.info> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |epi@atari8.info


--- Comment #5 from Adrian Matoga <epi@atari8.info> 2010-07-10 06:11:10 PDT ---
Still active in 2.047,

testcase:

import std.stdio;
struct A
{
    int a;
    this(int a) { this.a = a; writeln("hello, ", a); }
    ~this() { writeln("bye, ", a); }
    void doSth() { writeln("something"); }
}
void main()
{
    auto a1 = A(1);
    a1.doSth();
    A(2).doSth();
}

produces:

hello, 1
something
hello, 2
something
bye, 1

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 10, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


Andrei Alexandrescu <andrei@metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrei@metalanguage.com


--- Comment #6 from Andrei Alexandrescu <andrei@metalanguage.com> 2010-07-10 06:25:14 PDT ---
Upvoted.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 23, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


SHOO <zan77137@nifty.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P3
                 CC|                            |zan77137@nifty.com


--- Comment #7 from SHOO <zan77137@nifty.com> 2010-08-23 09:52:25 PDT ---
Upvoted.
By recent usage of struct, this bug is serious. This should be supported
quickly.

I suspect that these may be connected with each other:
    http://d.puremagic.com/issues/show_bug.cgi?id=4712

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
September 20, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516


andy@aligature.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andy@aligature.com


--- Comment #8 from andy@aligature.com 2010-09-20 08:51:34 PDT ---
This bug also seems like it could be the cause of

http://d.puremagic.com/issues/show_bug.cgi?id=4613

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
« First   ‹ Prev
1 2