> On Oct. 27, 2016, 5:03 p.m., Jie Yu wrote: > > 3rdparty/stout/include/stout/os/posix/xattr.hpp, lines 71-72 > > <https://reviews.apache.org/r/53041/diff/4/?file=1544874#file1544874line71> > > > > I think James made a valid point there that errno might not be > > preserved across delete. So using a vector<char> sounds better. > > Qian Zhang wrote: > I think `delete` will not change `errno`, I verified it by a small > program: > ``` > #include <errno.h> > #include <fcntl.h> > > int main() > { > char* temp = new char[4]; > > if (open("/xxx", 0) < 0) { > delete[] temp; > return errno; > } > > delete[] temp; > return 0; > } > ``` > This program tries to open a file `/xxx` which does not exist, and when I > run it, its exit code is 2 (i.e., `ENOENT`). And actually in stout I see > there are also some other codes using `delete` and `ErrnoError` in the same > way, e.g.: > > https://github.com/apache/mesos/blob/1.0.1/3rdparty/stout/include/stout/os/mktemp.hpp#L40:L41 > > https://github.com/apache/mesos/blob/1.0.1/3rdparty/stout/include/stout/os/posix/mkdtemp.hpp#L37:L38 > > However, I do see there are also some codes which tries to avoid `delete` > affecting `ErrnoError` in this way: > ``` > Error error = ErrnoError(); > delete[] temp; > return error; > ``` > > https://github.com/apache/mesos/blob/1.0.1/3rdparty/stout/include/stout/os/read.hpp#L67:L69 > > https://github.com/apache/mesos/blob/1.0.1/3rdparty/stout/include/stout/os/sysctl.hpp#L200:L202 > > > So the codes in stout are inconsistent regarding this issue. I think we > should fix it by making them handle this issue in a consistent way, I would > prefer the following way: > ``` > Error error = ErrnoError(); > delete[] temp; > return error; > ``` > > Let me know your comments :-)
I thought about it and I think that Qian Zhan is right that `delete` can't set `errno` because it never fails. If there was an error, it would either throw or segv. - James ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/53041/#review154042 ----------------------------------------------------------- On Oct. 25, 2016, 3:41 a.m., Qian Zhang wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/53041/ > ----------------------------------------------------------- > > (Updated Oct. 25, 2016, 3:41 a.m.) > > > Review request for mesos and Jie Yu. > > > Bugs: MESOS-6360 > https://issues.apache.org/jira/browse/MESOS-6360 > > > Repository: mesos > > > Description > ------- > > Added `setxattr()` and `getxattr()` in stout. > > > Diffs > ----- > > 3rdparty/stout/include/Makefile.am 1eb9c146d3eebacaea32e0f724d145f0c1dd676f > 3rdparty/stout/include/stout/os.hpp > 96e8621b198a3ec4cce78e0a6ff5f271eda05ff1 > 3rdparty/stout/include/stout/os/posix/xattr.hpp PRE-CREATION > 3rdparty/stout/include/stout/os/windows/xattr.hpp PRE-CREATION > 3rdparty/stout/include/stout/os/xattr.hpp PRE-CREATION > > Diff: https://reviews.apache.org/r/53041/diff/ > > > Testing > ------- > > > Thanks, > > Qian Zhang > >
