digitalmars.D.bugs - [Issue 6436] New: Refcounted initialization bug
- d-bugmail puremagic.com (67/67) Aug 04 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (30/30) Aug 04 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (27/27) Apr 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (12/12) Oct 26 2012 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (7/7) Oct 26 2012 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (12/12) Dec 12 2012 http://d.puremagic.com/issues/show_bug.cgi?id=6436
- d-bugmail puremagic.com (11/11) Feb 05 2013 http://d.puremagic.com/issues/show_bug.cgi?id=6436
http://d.puremagic.com/issues/show_bug.cgi?id=6436
Summary: Refcounted initialization bug
Product: D
Version: D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody puremagic.com
ReportedBy: andrej.mitrovich gmail.com
13:35:13 PDT ---
import std.typecons;
struct Foo
{
struct Payload
{
this(ref int bar, int value)
{
bar = value;
assert(bar == 5); // ok
}
}
alias RefCounted!(Payload, RefCountedAutoInitialize.yes) Data;
Data data;
int bar;
this(int value)
{
data = Data(bar, value);
assert(bar == 5); // throws, it's still 0
}
}
void main()
{
auto foo = Foo(5);
}
import std.typecons;
struct Foo
{
struct Payload
{
this(ref int bar, int value)
{
bar = value;
assert(bar == 5); // ok..
}
}
alias RefCounted!(Payload, RefCountedAutoInitialize.yes) Data;
Data data;
int bar;
this(int value)
{
data = Data(bar, value); // initializes bar to 5
assert(bar == 5); // throws, it's still 0
}
}
void main()
{
auto foo = Foo(5);
}
Foo's ctor is called, then Refcounted Payload's ctor is called which
initializes Foo's integer field, but upon return to the Foo ctor the integer
field seems to be reinitialized to 0.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 04 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6436
13:36:01 PDT ---
Oh damnit duplicated code sorry:
import std.typecons;
struct Foo
{
struct Payload
{
this(ref int bar, int value)
{
bar = value;
assert(bar == 5); // ok
}
}
alias RefCounted!(Payload, RefCountedAutoInitialize.yes) Data;
Data data;
int bar;
this(int value)
{
data = Data(bar, value);
assert(bar == 5); // throws, it's still 0
}
}
void main()
{
auto foo = Foo(5);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 04 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6436
18:45:56 PDT ---
Interestingly if you pass by pointer instead of by ref it works fine. Here's a
much more simplified example:
import std.typecons;
import std.stdio;
struct Struct1 {
this(ref int val) { val = 5; }
}
struct Struct2 {
this(int* val) { *val = 5; }
}
alias RefCounted!(Struct1) Str1;
alias RefCounted!(Struct2) Str2;
void main()
{
Str1 str1;
Str2 str2;
int val;
str1 = Str1(val);
writeln(val); // writes 0
str2 = Str2(&val);
writeln(val); // writes 5
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=6436
Denis Shelomovskij <verylonglogin.reg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |verylonglogin.reg gmail.com
20:21:00 MSD ---
This issue is blocked by `emplace` issue which is fixed in pull 896:
https://github.com/D-Programming-Language/phobos/pull/896
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 26 2012
http://d.puremagic.com/issues/show_bug.cgi?id=6436 20:47:37 MSD --- OK. Full fix added to the pull: https://github.com/D-Programming-Language/phobos/pull/896 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 26 2012
http://d.puremagic.com/issues/show_bug.cgi?id=6436 Commits pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/63503202b74a5e97e7755847feac886db0bbe64f Fix `emplace` part of issue 6436 * Issue URL: http://d.puremagic.com/issues/show_bug.cgi?id=6436 https://github.com/D-Programming-Language/phobos/commit/dab3b2a7dda8459b5f609761a984811d3e7aec5d Fix Issue 6436 - Refcounted initialization bug * Issue URL: http://d.puremagic.com/issues/show_bug.cgi?id=6436 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 12 2012
http://d.puremagic.com/issues/show_bug.cgi?id=6436
Andrej Mitrovic <andrej.mitrovich gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
13:19:58 PST ---
Thanks, fixed.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 05 2013









d-bugmail puremagic.com 