[Liblas-commits] hg-main-tree: handle 64-bit errors
liblas-commits at liblas.org
liblas-commits at liblas.org
Fri Mar 25 14:32:10 EDT 2011
details: http://hg.libpc.orghg-main-tree/rev/6885efaccc7e
changeset: 464:6885efaccc7e
user: Michael P. Gerlek <mpg at flaxen.com>
date: Fri Mar 25 11:32:02 2011 -0700
description:
handle 64-bit errors
diffstat:
apps/pc2pc.cpp | 12 +++---------
src/drivers/liblas/Iterator.cpp | 18 ++++++++++++++----
test/unit/LiblasWriterTest.cpp | 8 ++------
3 files changed, 19 insertions(+), 19 deletions(-)
diffs (91 lines):
diff -r 00c1e0355271 -r 6885efaccc7e apps/pc2pc.cpp
--- a/apps/pc2pc.cpp Fri Mar 25 11:25:06 2011 -0700
+++ b/apps/pc2pc.cpp Fri Mar 25 11:32:02 2011 -0700
@@ -116,9 +116,7 @@
//writer.setPointFormat( reader.getPointFormatNumber() );
- size_t np = (size_t)numPoints;
- assert(numPoints == np); // BUG
- writer.write(np);
+ writer.write(numPoints);
}
else if (hasOption("oracle"))
@@ -145,9 +143,7 @@
//writer.setPointFormat( reader.getPointFormatNumber() );
- size_t np = (size_t)numPoints;
- assert(numPoints == np); // BUG
- writer.write(np);
+ writer.write(numPoints);
#else
throw configuration_error("libPC not compiled with Oracle support");
#endif
@@ -164,9 +160,7 @@
writer.setPointFormat( reader.getPointFormatNumber() );
- size_t np = (size_t)numPoints;
- assert(numPoints == np); // BUG
- writer.write(np);
+ writer.write(numPoints);
}
Utils::closeFile(ofs);
diff -r 00c1e0355271 -r 6885efaccc7e src/drivers/liblas/Iterator.cpp
--- a/src/drivers/liblas/Iterator.cpp Fri Mar 25 11:25:06 2011 -0700
+++ b/src/drivers/liblas/Iterator.cpp Fri Mar 25 11:32:02 2011 -0700
@@ -263,12 +263,22 @@
}
-boost::uint64_t RandomIterator::seekImpl(boost::uint64_t pos)
+boost::uint64_t RandomIterator::seekImpl(boost::uint64_t newPos64)
{
- size_t posx = (size_t)pos; // BUG
- getExternalReader().Seek(posx);
+ // The liblas reader's seek() call only supports size_t, so we might
+ // not be able to satisfy this request...
- return pos;
+ if (newPos64 > std::numeric_limits<size_t>::max())
+ {
+ throw libpc_error("cannot support seek offsets greater than 32-bits");
+ }
+
+ // safe cast, since we just handled the overflow case
+ size_t newPos = static_cast<size_t>(newPos64);
+
+ getExternalReader().Seek(newPos);
+
+ return newPos;
}
diff -r 00c1e0355271 -r 6885efaccc7e test/unit/LiblasWriterTest.cpp
--- a/test/unit/LiblasWriterTest.cpp Fri Mar 25 11:25:06 2011 -0700
+++ b/test/unit/LiblasWriterTest.cpp Fri Mar 25 11:32:02 2011 -0700
@@ -70,9 +70,7 @@
writer.setSystemIdentifier("");
writer.setGeneratingSoftware("TerraScan");
- size_t np = (size_t)numPoints;
- assert(numPoints == np); // BUG
- writer.write(np);
+ writer.write(numPoints);
}
Utils::closeFile(ofs);
@@ -109,9 +107,7 @@
writer.setSystemIdentifier("");
writer.setGeneratingSoftware("TerraScan");
- size_t np = (size_t)numPoints;
- assert(numPoints == np); // BUG
- writer.write(np);
+ writer.write(numPoints);
}
Utils::closeFile(ofs);
More information about the Liblas-commits
mailing list