September 30, 2007 Bug in std.stdio.readln() | ||||
---|---|---|---|---|
| ||||
The following code causes a segfault for me on both x86 and amd64 systems. This happens with both the gentoo 'emerge dev-lang/gcc' with USE=d and with the gdc 0.24 binary distribution: ====================================================================== module readline; import std.stdio; void main () { while (1) { char[] buf = readln (); if (buf is null) break; writef ("%s", buf); } } ====================================================================== Upon EOF, there is a segfault inside of a string dup inside of readln: uint std.stdio.readln(struct std.c.stdio._iobuf*, inout char[]) #0 0xb7ed6a2c in memcpy () from /lib/libc.so.6 #1 0x0805992e in _adDupT () #2 0x080546e5 in _D3std5stdio6readlnFPS3std1c5stdio6_iobufKAaZk () #3 0x0805476a in _D3std5stdio6readlnFPS3std1c5stdio6_iobufZAa () #4 0x0804a076 in _Dmain () #5 0x08061018 in _D9dgccmain211_d_run_mainUiPPaPUAAaZiZi2goMFZv () #6 0x080610ca in _d_run_main () #7 0x0805d49b in main () I can try to build phobos with debugging symbols if other are unable to reproduce this problem. I will work around this by reading the file in characters. Thanks, David Brown |
Copyright © 1999-2021 by the D Language Foundation