[Issue 17650] New: [REG v2.075.0 b1-b4] std.getopt range violation
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Jul 14 00:31:34 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17650
Issue ID: 17650
Summary: [REG v2.075.0 b1-b4] std.getopt range violation
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: enhancement
Priority: P1
Component: phobos
Assignee: nobody at puremagic.com
Reporter: jrdemail2000-dlang at yahoo.com
The unit test below passes in 2.074.1 but fails in 2.075.0 beta-1 and beta-4
===== getopt_test.d =====
import std.getopt;
unittest // Dashes
{
auto args = ["program", "-m", "-5", "-n", "-50", "-c", "-"];
int m;
int n;
char c;
getopt(
args,
"m|mm", "integer", &m,
"n|nn", "integer", &n,
"c|cc", "character", &c,
);
assert(m == -5);
assert(n == -50);
assert(c == '-');
}
(The above adopted from tsv utilities unit tests here:
https://github.com/eBay/tsv-utils-dlang/blob/master/common/src/getopt_inorder.d#L302)
With 2.074.1 (succeeds):
$ ./dmd2.074.1 --version
DMD64 D Compiler v2.074.1
Copyright (c) 1999-2017 by Digital Mars written by Walter Bright
$ ./dmd2.074.1 -unittest -main -run getopt_test.d
$
With 2.075.0 beta-4 (error):
$ dmd --version
DMD64 D Compiler v2.075.0-b4
Copyright (c) 1999-2017 by Digital Mars written by Walter Bright
$ dmd -unittest -main -run getopt_test.d
core.exception.RangeError at std/getopt.d(1112): Range violation
----------------
4 dmd_runceaLDU 0x000000010f02a06a _d_arrayboundsp +
110
5 dmd_runceaLDU 0x000000010f046f03 @safe bool
std.getopt.optMatch(immutable(char)[], immutable(char)[], ref
immutable(char)[], std.getopt.configuration) + 639
6 dmd_runceaLDU 0x000000010f01558d @safe bool
std.getopt.handleOption!(int*).handleOption(immutable(char)[], int*, ref
immutable(char)[][], ref std.getopt.configuration, bool) + 985
7 dmd_runceaLDU 0x000000010f014a88 @safe void
std.getopt.getoptImpl!(immutable(char)[], immutable(char)[], int*,
immutable(char)[], immutable(char)[], int*, immutable(char)[],
immutable(char)[], char*).getoptImpl(ref immutable(char)[][], ref
std.getopt.configuration, ref std.getopt.GetoptResult, ref
std.getopt.GetOptException, void[][immutable(char)[]],
void[][immutable(char)[]], immutable(char)[], immutable(char)[], int*,
immutable(char)[], immutable(char)[], int*, immutable(char)[],
immutable(char)[], char*) + 1164
8 dmd_runceaLDU 0x000000010f014349 @safe
std.getopt.GetoptResult std.getopt.getopt!(immutable(char)[],
immutable(char)[], int*, immutable(char)[], immutable(char)[], int*,
immutable(char)[], immutable(char)[], char*).getopt(ref immutable(char)[][],
immutable(char)[], immutable(char)[], int*, immutable(char)[],
immutable(char)[], int*, immutable(char)[], immutable(char)[], char*) + 189
9 dmd_runceaLDU 0x000000010f011961 void
getopt_test.__unittestL3_1() + 301
10 dmd_runceaLDU 0x000000010f011808 void
getopt_test.__modtest() + 8
11 dmd_runceaLDU 0x000000010f02a8d0 int
core.runtime.runModuleUnitTests().__foreachbody2(object.ModuleInfo*) + 44
12 dmd_runceaLDU 0x000000010f02096e int
object.ModuleInfo.opApply(scope int
delegate(object.ModuleInfo*)).__lambda2(immutable(object.ModuleInfo*)) + 34
13 dmd_runceaLDU 0x000000010f042205 int
rt.minfo.moduleinfos_apply(scope int
delegate(immutable(object.ModuleInfo*))).__foreachbody2(ref
rt.sections_osx_x86_64.SectionGroup) + 85
14 dmd_runceaLDU 0x000000010f042190 int
rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*))) +
32
15 dmd_runceaLDU 0x000000010f020945 int
object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)) + 33
16 dmd_runceaLDU 0x000000010f02a7ba runModuleUnitTests +
126
17 dmd_runceaLDU 0x000000010f03a9aa void
rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()
+ 22
18 dmd_runceaLDU 0x000000010f03a943 void
rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate()) + 31
19 dmd_runceaLDU 0x000000010f03a8ae _d_run_main + 458
20 dmd_runceaLDU 0x000000010f01182f main + 15
21 libdyld.dylib 0x00007fffc7550234 start + 0
22 ??? 0x0000000000000000 0x0 + 0
--
More information about the Digitalmars-d-bugs
mailing list