[Issue 6814] New: Calling std.file.readLink causes code to not compile.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Oct 15 16:58:34 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6814
Summary: Calling std.file.readLink causes code to not compile.
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: opantm+spam at gmail.com
--- Comment #0 from Kapps <opantm+spam at gmail.com> 2011-10-15 16:57:39 PDT ---
The function std.file.readLink attempts to convert a char[2048] to a char*
implicitly, causing any code calling it to result in a compiler error.
Test Case:
import std.stdio;
import std.file;
void main() {
string Path = readLink("/proc/self/exe");
writefln(Path);
}
Output:
/usr/include/d/dmd/phobos/std/file.d(1834): Error: function
core.sys.posix.unistd.readlink (in const(char*), char*, ulong) is not callable
using argument types (const(char*),char[2048LU],ulong)
/usr/include/d/dmd/phobos/std/file.d(1835): Error: cannot implicitly convert
expression (buffer) of type char[2048LU] to char*
Fix:
Just add a .ptr when calling the core.sys version.
As an unrelated issue, readLink will also truncate without warning if the path
resolves to more than 2047 characters, but I'm not sure if that's worth opening
a separate bug report for.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list