@@ -16,6 +16,16 @@ extern "C"{
1616 Model* const out_model) {
1717 API_TRY{
1818
19+ if (out_model == nullptr || extents == nullptr ) {
20+ return APIResult::ErrorInvalidArgument;
21+ }
22+ if (city_model_size < 0 ) {
23+ return APIResult::ErrorInvalidArgument;
24+ }
25+ if (city_model_size > 0 && city_model_handles == nullptr ) {
26+ return APIResult::ErrorInvalidArgument;
27+ }
28+
1929 CityModelVector city_models = std::make_shared<std::vector<std::weak_ptr<const citygml::CityModel>>>();
2030 for (int i = 0 ; i < city_model_size; ++i) {
2131 if (!city_model_handles[i]) {
@@ -26,6 +36,11 @@ extern "C"{
2636 city_models->push_back (weak);
2737 }
2838
39+ if (city_models->empty ()) {
40+ // 入力に有効な CityModel が含まれていない
41+ return APIResult::ErrorInvalidArgument;
42+ }
43+
2944 TileExtractor::extractWithCombine (*out_model, city_models, options, *extents);
3045 return APIResult::Success;
3146
@@ -40,6 +55,9 @@ extern "C"{
4055 const std::vector<plateau::geometry::Extent>* extents,
4156 Model* const out_model) {
4257 API_TRY{
58+ if (out_model == nullptr || extents == nullptr || city_model_handle == nullptr ) {
59+ return APIResult::ErrorInvalidArgument;
60+ }
4361 TileExtractor::extractWithGrid (*out_model, city_model_handle->getCityModel (), options, *extents);
4462 return APIResult::Success;
4563 }
0 commit comments