diff --git a/src/fs_xattr.cpp b/src/fs_xattr.cpp index b13ef326..d9160063 100644 --- a/src/fs_xattr.cpp +++ b/src/fs_xattr.cpp @@ -67,16 +67,11 @@ fs::xattr::list(const string &path_, { ssize_t rv; - rv = -ERANGE; - while(rv == -ERANGE) - { - rv = fs::llistxattr(path_,NULL,0); - if(rv <= 0) - return rv; - - attrs_->resize(rv); + attrs_->resize(4096); - rv = fs::llistxattr(path_,&(*attrs_)[0],rv); + while(true) + { + rv = fs::llistxattr(path_,attrs_->data(),attrs_->size()); } return rv;