shape.input - add stream state check and calculate position limit
This commit is contained in:
parent
9f439d1e2e
commit
c3ccff4f02
2 changed files with 7 additions and 1 deletions
|
@ -71,7 +71,8 @@ feature_ptr shape_featureset<filterT>::next()
|
||||||
return feature_ptr();
|
return feature_ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (shape_.shx().pos() < 2 * shx_file_length_)
|
std::streampos position_limit = 2 * shx_file_length_ - 2 * sizeof(int);
|
||||||
|
while (shape_.shx().is_good() && shape_.shx().pos() <= position_limit)
|
||||||
{
|
{
|
||||||
int offset = shape_.shx().read_xdr_integer();
|
int offset = shape_.shx().read_xdr_integer();
|
||||||
int record_length = shape_.shx().read_xdr_integer();
|
int record_length = shape_.shx().read_xdr_integer();
|
||||||
|
|
|
@ -259,6 +259,11 @@ public:
|
||||||
{
|
{
|
||||||
return file_.eof();
|
return file_.eof();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool is_good()
|
||||||
|
{
|
||||||
|
return file_.good();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHAPEFILE_HPP
|
#endif // SHAPEFILE_HPP
|
||||||
|
|
Loading…
Reference in a new issue