Thread overview | |||||
---|---|---|---|---|---|
|
September 19, 2005 IPF on certain invalid code involving a const | ||||
---|---|---|---|---|
| ||||
Using DMD 0.131, Windows 98SE. ---------- void main() { const char[] qwert = "\U000579bd"; yuiop(asdfg(qwert)); } void yuiop(char[] jhkl) {} ---------- D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): undefined identifier asdfg D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function expected before (), not asdfg of type int D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function ipf1.yuiop (char[]) does not match argument types (int) ---------- DMD caused an invalid page fault in module DMD.EXE at 0167:0040e42b. Registers: EAX=00000000 CS=0167 EIP=0040e42b EFLGS=00010246 EBX=00886114 SS=016f ESP=0071fa68 EBP=0073b3dc ECX=000579bd DS=016f ESI=0073b3dc FS=4877 EDX=004cd3d2 ES=016f EDI=0073a248 GS=455e Bytes at CS:EIP: 66 f7 04 4a 57 01 74 1a ff 74 24 0c 8b ce e8 f6 Stack dump: 00886114 00000000 00000004 000579bd 0040c5ff 0073b3dc 00000000 0073ce4c 00000001 0073b3dc 0073b3dc 00411a36 0073b3dc 0073a248 0073b3dc 00735110 ---------- Seems to crash only if the string is declared as const and the initialiser contains a codepoint beyond U+FFFF, whether notated with \U, \x or x"...". Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++@ a->--- UB@ P+ L E@ W++@ N+++ o K-@ w++@ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++>++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
September 19, 2005 Re: IPF on certain invalid code involving a const | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon | Confirmed on Windows XP.
Here's a reduced test case:
<code>
void main(char[][] a){
main("\U00010000");
}
</code>
Stewart Gordon wrote:
> Using DMD 0.131, Windows 98SE.
>
> ----------
> void main() {
> const char[] qwert = "\U000579bd";
>
> yuiop(asdfg(qwert));
> }
>
> void yuiop(char[] jhkl) {}
> ----------
> D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): undefined identifier asdfg
> D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function expected before (), not asdfg of type int
> D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function ipf1.yuiop (char[]) does not match argument types (int)
> ----------
> DMD caused an invalid page fault in
> module DMD.EXE at 0167:0040e42b.
> Registers:
> EAX=00000000 CS=0167 EIP=0040e42b EFLGS=00010246
> EBX=00886114 SS=016f ESP=0071fa68 EBP=0073b3dc
> ECX=000579bd DS=016f ESI=0073b3dc FS=4877
> EDX=004cd3d2 ES=016f EDI=0073a248 GS=455e
> Bytes at CS:EIP:
> 66 f7 04 4a 57 01 74 1a ff 74 24 0c 8b ce e8 f6
> Stack dump:
> 00886114 00000000 00000004 000579bd 0040c5ff 0073b3dc 00000000 0073ce4c 00000001 0073b3dc 0073b3dc 00411a36 0073b3dc 0073a248 0073b3dc 00735110
> ----------
>
> Seems to crash only if the string is declared as const and the initialiser contains a codepoint beyond U+FFFF, whether notated with \U, \x or x"...".
>
> Stewart.
>
|
September 20, 2005 Re: IPF on certain invalid code involving a const | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon Attachments: | Stewart Gordon schrieb: > Using DMD 0.131, Windows 98SE. > > ---------- > void main() { > const char[] qwert = "\U000579bd"; > > yuiop(asdfg(qwert)); > } > > void yuiop(char[] jhkl) {} > ---------- > D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): undefined identifier > asdfg > D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function expected > before (), not asdfg of type int > D:\My Documents\Programming\D\Tests\bugs\ipf1.d(4): function ipf1.yuiop > (char[]) does not match argument types (int) > ---------- > DMD caused an invalid page fault in > module DMD.EXE at 0167:0040e42b. > Registers: > EAX=00000000 CS=0167 EIP=0040e42b EFLGS=00010246 > EBX=00886114 SS=016f ESP=0071fa68 EBP=0073b3dc > ECX=000579bd DS=016f ESI=0073b3dc FS=4877 > EDX=004cd3d2 ES=016f EDI=0073a248 GS=455e > Bytes at CS:EIP: > 66 f7 04 4a 57 01 74 1a ff 74 24 0c 8b ce e8 f6 > Stack dump: > 00886114 00000000 00000004 000579bd 0040c5ff 0073b3dc 00000000 0073ce4c > 00000001 0073b3dc 0073b3dc 00411a36 0073b3dc 0073a248 0073b3dc 00735110 > ---------- > > Seems to crash only if the string is declared as const and the initialiser contains a codepoint beyond U+FFFF, whether notated with \U, \x or x"...". > > Stewart. > Added to DStress as http://dstress.kuehne.cn/nocompile/c/const_24_A.d http://dstress.kuehne.cn/nocompile/c/const_24_B.d http://dstress.kuehne.cn/nocompile/c/const_24_C.d http://dstress.kuehne.cn/nocompile/c/const_24_D.d http://dstress.kuehne.cn/nocompile/c/const_24_E.d http://dstress.kuehne.cn/nocompile/c/const_24_F.d http://dstress.kuehne.cn/nocompile/c/const_24_G.d Thomas |
Copyright © 1999-2021 by the D Language Foundation