> On Oct. 28, 2016, 1:03 a.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.
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 :-)
- Qian
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/53041/#review154042
-----------------------------------------------------------
On Oct. 25, 2016, 11: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, 11: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
>
>