Thread overview | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
May 17, 2015 ICE? | ||||
---|---|---|---|---|
| ||||
Is this error an ICE? I think so, because I see the internal filename, but I'm not sure. Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] |
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Namespace | On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure.
>
> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[]
Have you got a code sample to reproduce this?
|
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gary Willoughby | On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote:
> On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
>> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure.
>>
>> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[]
>
> Have you got a code sample to reproduce this?
Of course:
----
void main() {
import core.stdc.stdlib : malloc, free;
auto ptr = cast(char[]) malloc(42);
}
----
|
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Namespace | On Sun, 17 May 2015 09:33:27 +0000 Namespace via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote: > > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote: > >> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure. > >> > >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] > > > > Have you got a code sample to reproduce this? > > Of course: > > ---- > void main() { > import core.stdc.stdlib : malloc, free; > > auto ptr = cast(char[]) malloc(42); > } > ---- I guess it should be: auto ptr = cast(char*)malloc(42)[0 .. 42]; |
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Namespace | On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure.
>
> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[]
I would say this is not an ICE just normal error message.
|
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Sunday, 17 May 2015 at 09:59:41 UTC, Daniel Kozak wrote:
>
> On Sun, 17 May 2015 09:33:27 +0000
> Namespace via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
>
>> On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote:
>> > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
>> >> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure.
>> >>
>> >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[]
>> >
>> > Have you got a code sample to reproduce this?
>>
>> Of course:
>>
>> ----
>> void main() {
>> import core.stdc.stdlib : malloc, free;
>>
>> auto ptr = cast(char[]) malloc(42);
>> }
>> ----
>
> I guess it should be:
>
> auto ptr = cast(char*)malloc(42)[0 .. 42];
or this if you want ptr to be char[] and not a pointer to char:
auto ptr = (cast(char*)malloc(42))[0 .. 42];
or
auto ptr = cast(char[])malloc(42)[0 .. 42];
|
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Sunday, 17 May 2015 at 10:09:11 UTC, Daniel Kozak wrote: > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote: [...] >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] > > I would say this is not an ICE just normal error message. "e2ir: " shouldn't be there, though. |
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Sun, 17 May 2015 10:17:42 +0000 anonymous via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > On Sunday, 17 May 2015 at 10:09:11 UTC, Daniel Kozak wrote: > > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote: > [...] > >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] > > > > I would say this is not an ICE just normal error message. > > "e2ir: " shouldn't be there, though. Yep |
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Sunday, 17 May 2015 at 09:59:41 UTC, Daniel Kozak wrote:
>
> On Sun, 17 May 2015 09:33:27 +0000
> Namespace via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
>
>> On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote:
>> > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
>> >> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure.
>> >>
>> >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[]
>> >
>> > Have you got a code sample to reproduce this?
>>
>> Of course:
>>
>> ----
>> void main() {
>> import core.stdc.stdlib : malloc, free;
>>
>> auto ptr = cast(char[]) malloc(42);
>> }
>> ----
>
> I guess it should be:
>
> auto ptr = cast(char*)malloc(42)[0 .. 42];
That would work, but I did it on purpose. I wanted to test whether such dangerous code compiles or whether the compiler is smart enough and hits the alarm.
|
May 17, 2015 Re: ICE? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Namespace | On Sun, 17 May 2015 10:36:33 +0000 Namespace via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > On Sunday, 17 May 2015 at 09:59:41 UTC, Daniel Kozak wrote: > > > > On Sun, 17 May 2015 09:33:27 +0000 > > Namespace via Digitalmars-d-learn > > <digitalmars-d-learn@puremagic.com> wrote: > > > >> On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote: > >> > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote: > >> >> Is this error an ICE? I think so, because I see the internal filename, but I'm not sure. > >> >> > >> >> Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] > >> > > >> > Have you got a code sample to reproduce this? > >> > >> Of course: > >> > >> ---- > >> void main() { > >> import core.stdc.stdlib : malloc, free; > >> > >> auto ptr = cast(char[]) malloc(42); > >> } > >> ---- > > > > I guess it should be: > > > > auto ptr = cast(char*)malloc(42)[0 .. 42]; > > That would work, but I did it on purpose. I wanted to test whether such dangerous code compiles or whether the compiler is smart enough and hits the alarm. I see. for eg.: void main() { import core.stdc.stdlib : malloc, free; static struct arr { size_t length; void* ptr; } auto ptr = cast(arr) malloc(42); } prints: test2.d(9): Error: cannot cast expression malloc(42LU) of type void* to arr which makes sense, even e2ir text is not here. |
Copyright © 1999-2021 by the D Language Foundation