digitalmars.D.bugs - [Issue 17927] New: [scope] scope input return value can be escaped
- d-bugmail puremagic.com (53/53) Oct 22 2017 https://issues.dlang.org/show_bug.cgi?id=17927
https://issues.dlang.org/show_bug.cgi?id=17927 Issue ID: 17927 Summary: [scope] scope input return value can be escaped Product: D Version: D2 Hardware: All OS: Linux Status: NEW Keywords: safe Severity: normal Priority: P4 Component: dmd Assignee: bugzilla digitalmars.com Reporter: code dawg.eu cat > bug.d << CODE struct String { pure nothrow nogc: inout(char)[] opSlice() inout scope trusted { return ptr[0 .. len]; } char *ptr; size_t len; } void escape(const char[] s) nothrow safe nogc { static const(char)[] cache; cache = s; } /// nothrow safe unittest { auto s = String(&"Hello".dup[0], 5); escape(s[]); } CODE dmd -c -unittest -dip1000 bug.d ---- Should error with `scope variable this.ptr may not be returned`. workaround: ---- char[] opSlice() scope trusted { return ptr[0 .. len]; } const(char)[] opSlice() const scope trusted { return ptr[0 .. len]; } ---- --
Oct 22 2017