| Thread overview | |||||
|---|---|---|---|---|---|
|
July 28, 2014 Bug on dmd or gdc ? | ||||
|---|---|---|---|---|
| ||||
Hello !
Based on a question about manually allocated structures with payload I found that a solution proposed seems to work when compiled with dmd but segfaults when compiled with gdc.
So my question is: Is this a bug on dmd, gdc or a bad idiom ?
---- code to see the problem
import std.stdio;
import core.stdc.stdlib;
void main()
{
struct S
{
int size;
char[0] _b;
@property char[] buf() { return (_b.ptr)[0..size];}
}
int size = 12;
S *s = cast(S*)malloc(S.sizeof + size);
if(s !is null)
{
scope(exit) free(s);
s.size = size;
s.buf[0] = 'a';
writeln(s.buf[0]);
}
}
| ||||
July 28, 2014 Re: Bug on dmd or gdc ? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Domingo Alvarez Duarte | Domingo Alvarez Duarte:
> Based on a question about manually allocated structures with payload I found that a solution proposed seems to work when compiled with dmd but segfaults when compiled with gdc.
> ...
> int size;
> char[0] _b;
> @property char[] buf() { return (_b.ptr)[0..size];}
> }
I guess you are using different versions of the front-end. Zero-length arrays was null before, and it's not null in V. 2.066.
So probably there is no bug, just a little design change for the better.
Bye,
bearophile
| |||
July 28, 2014 Re: Bug on dmd or gdc ? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Monday, 28 July 2014 at 08:16:37 UTC, bearophile wrote:
> Domingo Alvarez Duarte:
>
>> Based on a question about manually allocated structures with payload I found that a solution proposed seems to work when compiled with dmd but segfaults when compiled with gdc.
>> ...
>> int size;
>> char[0] _b;
>> @property char[] buf() { return (_b.ptr)[0..size];}
>> }
>
> I guess you are using different versions of the front-end. Zero-length arrays was null before, and it's not null in V. 2.066.
>
> So probably there is no bug, just a little design change for the better.
>
> Bye,
> bearophile
Thanks ! You are right I'm using dmd 2.066 and gdc 4.8/4.9, Cheers !
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply