digitalmars.D.bugs - [Issue 17650] New: [REG v2.075.0 b1-b4] std.getopt range violation
- via Digitalmars-d-bugs (101/101) Jul 14 2017 https://issues.dlang.org/show_bug.cgi?id=17650
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 puremagic.com Reporter: jrdemail2000-dlang 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 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 --
Jul 14 2017