Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
September 02, 2004 DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
I'm not sure if this is a bug or even a legal assignment, but the following causes an internal error: import std.file; void main() { char[] curdir; curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is allowed? } Compiling with v0.101 on Windows 2000 with flags -inline -O gives: Internal error: ..\ztc\cod2.c 4207 I just started using D and am a bit rusty with the old c/c++ skills, let alone knowing how to do things proper in D, but I'm quite excited to learn... :) I have been following the NG for a while now and let me say, Walter, fantastic language! I've learned so much (just about programming and language design in general) from everyone who posts; I was quite happy just reading, but I've decided to join the fray. :P Looking forward to sharpening my D skills and letting some others get a bit rustier! (not by avoidance of course, just ramping up the D usage) :) -Kramer |
September 02, 2004 Re: DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kramer | Kramer wrote: > I'm not sure if this is a bug or even a legal assignment, but the following causes an internal error: Every internal error is a bug. Or, at least, every internal error that's reproducible. <snip> > curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is allowed? <snip> What were you expecting it to do? Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
September 02, 2004 Re: DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kramer | > void main()
> {
> char[] curdir;
> curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is
> allowed?
> }
This isn't quite on-topic but when I last tried std.file.getcwd it returned a string with a superfluous space at the end. I guess this is why you're trying to create a sliced string. I suggest this
getcwd[0 .. length - 1]
|
September 02, 2004 Re: DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon | In article <ch6prk$738$1@digitaldaemon.com>, Stewart Gordon says... ><snip> >> curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is allowed? ><snip> > >What were you expecting it to do? It seems that getcwd() has a an extra character in the string in returns. I can't tell what it is, but I was trying to remove it. As for the assignment, I didn't know if I needed to size the array first or if I could attempt the above, so I just went for it. Debug question: How would I find out what that character is using a printf type debug technique. (I've never used gdb or similar debuggers in windows/unix before). Thanks for the help! -Kramer > >Stewart. > >-- >My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
September 02, 2004 Re: DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bent Rasmussen | In article <ch6qch$77n$1@digitaldaemon.com>, Bent Rasmussen says... > >> void main() >> { >> char[] curdir; >> curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is >> allowed? >> } > >This isn't quite on-topic but when I last tried std.file.getcwd it returned a string with a superfluous space at the end. I guess this is why you're trying to create a sliced string. I suggest this > > getcwd[0 .. length - 1] Yup, that's spot on what I was attempting. Thanks for the tip. -Kramer |
September 02, 2004 Re: DMD 0.101: Internal error on array concatenation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kramer | On Thu, 2 Sep 2004 16:35:49 +0000 (UTC), Kramer <Kramer_member@pathlink.com> wrote: > In article <ch6qch$77n$1@digitaldaemon.com>, Bent Rasmussen says... >> >>> void main() >>> { >>> char[] curdir; >>> curdir[0..(getcwd().length-1)] ~= getcwd(); // not sure if this is >>> allowed? >>> } >> >> This isn't quite on-topic but when I last tried std.file.getcwd it returned >> a string with a superfluous space at the end. I guess this is why you're >> trying to create a sliced string. I suggest this >> >> getcwd[0 .. length - 1] > > Yup, that's spot on what I was attempting. Thanks for the tip. So the corrected code is simply: char[] curdir; curdir ~= getcwd()[0 .. length -1]; or: char[] curdir; curdir = getcwd()[0 .. length -1]; or: char[] curdir; curdir = getcwd(); curdir.length = curdir.length - 1; Regan -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
Copyright © 1999-2021 by the D Language Foundation