cannot resize a dynamic array of int[int]

Jarrett Billingsley jarrett.billingsley at gmail.com
Tue Oct 21 13:30:17 PDT 2008


On Tue, Oct 21, 2008 at 3:41 PM, Steven Schveighoffer
<schveiguy at yahoo.com> wrote:
> "Jarrett Billingsley" wrote
>> On Tue, Oct 21, 2008 at 1:31 PM, Denis Koroskin <2korden at gmail.com> wrote:
>>> On Tue, 21 Oct 2008 21:24:28 +0400, Ran <saotome.ran at googlemail.com>
>>> wrote:
>>>
>>>> It should be a stupid question. But I still hope for any response. Could
>>>> anyone tell me pls why the following code doesn't work ?
>>>>
>>>> uint numberOfSubsets(uint n) {
>>>>        return (1 << n) - 1;
>>>> }
>>>>
>>>> void main(char[][] args) {
>>>>        int[int] a[];
>>>>        a.length = numberOfSubsets(3);
>>>> }
>>>> The generated program runs endlessly. I'm using D2.
>>>> Ran
>>>
>>> This is a bug, try wrapping the assoc. array in a struct so that you make
>>> array of structs instead of array of maps. It should help.
>>>
>>
>> It's a bug that's been around for way too fucking long, excuse the
>> language.  It's apparently a one-character change in the typeinfo for
>> AAs.
>
> FYI, this was just posted to the bug report:
>
>> http://d.puremagic.com/issues/show_bug.cgi?id=929
>>
>>
>>
>>
>>
>> ------- Comment #15 from kamm-removethis at incasoftware.de  2008-10-21
>> 12:40 -------
>> Just to make the patch more explicit: Adding
>>
>> int TypeAArray::isZeroInit()
>> {
>>    return 1;
>> }
>>
>> to mtype.c and the matching prototype to mtype.h fixes it. Tested in LDC.
>
> -Steve
>
>
>

Downs posted an equivalent solution over a year ago to the same bug.



More information about the Digitalmars-d mailing list