diff --git a/src/fs_xattr.cpp b/src/fs_xattr.cpp index ed038ebe..3482f678 100644 --- a/src/fs_xattr.cpp +++ b/src/fs_xattr.cpp @@ -151,12 +151,17 @@ fs::xattr::get(const int fd_, rv = -ERANGE; val_->resize(64); - do + while(true) { rv = fs::fgetxattr(fd_,attr_,&(*val_)[0],val_->size()); + if(rv >= 0) + return rv; + if(rv != -ERANGE) + return rv; + val_->resize(val_->size() * 1.2); } - while(rv == -ERANGE); + while(rv == -ERANGE) {