From 724adebb54d147b1a5179f17817491544f8c2f36 Mon Sep 17 00:00:00 2001 From: program-- Date: Tue, 11 Jul 2023 08:56:42 -0700 Subject: [PATCH] rev: throw exception if invalid wkb type changes per https://github.com/NOAA-OWP/ngen/pull/522#discussion_r1258952435 also modifies switch to return instead of assign to `g`. --- src/geopackage/wkb.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/geopackage/wkb.cpp b/src/geopackage/wkb.cpp index 33efd5b90e..6c7b663690 100644 --- a/src/geopackage/wkb.cpp +++ b/src/geopackage/wkb.cpp @@ -171,18 +171,25 @@ typename wkb::geometry wkb::read(const byte_vector& buffer) uint32_t type; utils::copy_from(buffer, index, type, order); - geometry g; switch(type) { - case 1: g = read_point(buffer, index, order); break; - case 2: g = read_linestring(buffer, index, order); break; - case 3: g = read_polygon(buffer, index, order); break; - case 4: g = read_multipoint(buffer, index, order); break; - case 5: g = read_multilinestring(buffer, index, order); break; - case 6: g = read_multipolygon(buffer, index, order); break; - default: g = point_t{std::nan("0"), std::nan("0")}; break; + case 1: + return read_point(buffer, index, order); + case 2: + return read_linestring(buffer, index, order); + case 3: + return read_polygon(buffer, index, order); + case 4: + return read_multipoint(buffer, index, order); + case 5: + return read_multilinestring(buffer, index, order); + case 6: + return read_multipolygon(buffer, index, order); + default: + throw std::runtime_error( + "this reader only implements OGC geometry types 1-6, " + "but received type " + std::to_string(type) + ); } - - return g; } // ----------------------------------------------------------------------------