[Issue 13958] New: RangeError with impure map
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Jan 9 07:37:19 PST 2015
https://issues.dlang.org/show_bug.cgi?id=13958
Issue ID: 13958
Summary: RangeError with impure map
Product: D
Version: D2
Hardware: x86_64
OS: Mac OS X
Status: NEW
Severity: critical
Priority: P1
Component: Phobos
Assignee: nobody at puremagic.com
Reporter: john.loughran.colvin at gmail.com
//incBug.d
import std.stdio, std.algorithm, std.array;
static a = ["a", "b", "c", "d", "e", "f", "g", "h", "i"];
void main()
{
size_t idx = 0;
writeln(a.map!(s => s ~ a[idx++]).joiner(", "));
}
$ rdmd incBud.g
core.exception.RangeError at incBug.d(9): Range violation
----------------
5 incBug 0x00000001012a0ca1 D6incBug7__arrayZ +
41
6 incBug 0x00000001012a1053 nothrow @safe
immutable(char)[]
incBug.main().__lambda1!(immutable(char)[]).__lambda1(immutable(char)[]) + 67
7 incBug 0x00000001012a12b4 nothrow @property
@safe immutable(char)[]
std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult.front()
+ 108
8 incBug 0x00000001012a213b nothrow @safe void
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result.popFront() + 211
9 incBug 0x00000001012a32be void
std.stdio.File.LockingTextWriter.put!(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result).put(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result) + 134
10 incBug 0x00000001012a322d void
std.range.doPut!(std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result).doPut(ref std.stdio.File.LockingTextWriter, ref
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result) + 37
11 incBug 0x00000001012a3204 void
std.range.put!(std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result).put(ref std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result) + 20
12 incBug 0x00000001012a2cea void
std.format.formatRange!(std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result, char).formatRange(ref
std.stdio.File.LockingTextWriter, ref
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result, ref std.format.FormatSpec!(char).FormatSpec) + 298
13 incBug 0x00000001012a2b87 void
std.format.formatValue!(std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result, char).formatValue(std.stdio.File.LockingTextWriter,
ref
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result, ref std.format.FormatSpec!(char).FormatSpec) + 47
14 incBug 0x00000001012a2b30 void
std.format.formatGeneric!(std.stdio.File.LockingTextWriter,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result,
char).formatGeneric(std.stdio.File.LockingTextWriter, const(void)*, ref
std.format.FormatSpec!(char).FormatSpec) + 64
15 incBug 0x00000001012a2a31 uint
std.format.formattedWrite!(std.stdio.File.LockingTextWriter, char,
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result).formattedWrite(std.stdio.File.LockingTextWriter,
const(char[]),
std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result) + 1209
16 incBug 0x00000001012a2535 void
std.stdio.File.write!(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result,
char).write(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result, char) + 189
17 incBug 0x00000001012a246b void
std.stdio.writeln!(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result).writeln(std.algorithm.joiner!(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).joiner(std.algorithm.__T9MapResultS246incBug4mainFZ9__lambda1TAAyaZ.MapResult,
immutable(char)[]).Result) + 43
18 incBug 0x00000001012a0c6a _Dmain + 170
19 incBug 0x00000001012b88d4
D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv + 40
20 incBug 0x00000001012b8819 void
rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate()) + 45
21 incBug 0x00000001012b8879 void
rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()
+ 45
22 incBug 0x00000001012b8819 void
rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate()) + 45
23 incBug 0x00000001012b8795 _d_run_main + 433
24 incBug 0x00000001012a0d1c main + 20
25 libdyld.dylib 0x00007fff8fd5d5c9 start + 1
26 ??? 0x0000000000000001 0x0 + 1
aa, $
I thought perhaps it was because of referencing `a` twice, but it does the same
with 2 different arrays.
--
More information about the Digitalmars-d-bugs
mailing list