Thread overview
Why is the following failing?
Jan 25
ryuukk_
Jan 25
Hipreme
Jan 25
ryuukk_
Jan 25
ryuukk_
Jan 25
Johan
Jan 25
ryuukk_
January 25
void main()
{
    char[32] id = 0;
    const(char)* str = "hello";

    id = str[0 .. 6];
}

it should be a simple memcpy, why DMD complain?

``onlineapp.d(6): Error: mismatched array lengths 32 and 6 for assignment `id[] = str[0..6]```

I'm too tired to notice something obvious?

January 25

On Thursday, 25 January 2024 at 15:20:01 UTC, ryuukk_ wrote:

>
void main()
{
    char[32] id = 0;
    const(char)* str = "hello";

    id = str[0 .. 6];
}

it should be a simple memcpy, why DMD complain?

``onlineapp.d(6): Error: mismatched array lengths 32 and 6 for assignment `id[] = str[0..6]```

I'm too tired to notice something obvious?

You need to slice your id variable to be the required size. You're trying to assign the complete id variable to a slice of size 6.

i.e: that should be used instead id[0..6] = str[0..6]

January 25

On Thursday, 25 January 2024 at 15:22:35 UTC, Hipreme wrote:

>

On Thursday, 25 January 2024 at 15:20:01 UTC, ryuukk_ wrote:

>
void main()
{
    char[32] id = 0;
    const(char)* str = "hello";

    id = str[0 .. 6];
}

it should be a simple memcpy, why DMD complain?

``onlineapp.d(6): Error: mismatched array lengths 32 and 6 for assignment `id[] = str[0..6]```

I'm too tired to notice something obvious?

You need to slice your id variable to be the required size. You're trying to assign the complete id variable to a slice of size 6.

i.e: that should be used instead id[0..6] = str[0..6]

That's dumb, compiler knows that id has enough room and it should do a simple memcpy, i shouldn't have to do that myself..

i'll stick to calling memcpy.. why stray away from C to do worse

January 25
void main()
{
    char[32] id = 0;
    id = "hello";
}

this works fine, and that is what i expect for the example above..

January 25

On Thursday, 25 January 2024 at 15:39:08 UTC, ryuukk_ wrote:

>
void main()
{
    char[32] id = 0;
    id = "hello";
}

this works fine, and that is what i expect for the example above..

Raise a bug, I'll fix it.

January 25

On Thursday, 25 January 2024 at 16:07:44 UTC, Stefan Koch wrote:

>

On Thursday, 25 January 2024 at 15:39:08 UTC, ryuukk_ wrote:

>
void main()
{
    char[32] id = 0;
    id = "hello";
}

this works fine, and that is what i expect for the example above..

Raise a bug, I'll fix it.

Hmm.

To me, the bug is that string assignment to the array is allowed. Because this also compiles without any compile error:

void main()
{
    char[4] id;
    id = "hello asdad";
}
January 25

On Thursday, 25 January 2024 at 17:50:57 UTC, Johan wrote:

>

On Thursday, 25 January 2024 at 16:07:44 UTC, Stefan Koch wrote:

>

On Thursday, 25 January 2024 at 15:39:08 UTC, ryuukk_ wrote:

>
void main()
{
    char[32] id = 0;
    id = "hello";
}

this works fine, and that is what i expect for the example above..

Raise a bug, I'll fix it.

Hmm.

To me, the bug is that string assignment to the array is allowed. Because this also compiles without any compile error:

void main()
{
    char[4] id;
    id = "hello asdad";
}

I created an issue and included that case

https://issues.dlang.org/show_bug.cgi?id=24355