diff --git a/ogr/ogrsf_frmts/generic/ogrlayerarrow.cpp b/ogr/ogrsf_frmts/generic/ogrlayerarrow.cpp index 4717db14cdd0..3ccdaf488df4 100644 --- a/ogr/ogrsf_frmts/generic/ogrlayerarrow.cpp +++ b/ogr/ogrsf_frmts/generic/ogrlayerarrow.cpp @@ -5862,10 +5862,13 @@ bool OGRLayer::CreateFieldFromArrowSchemaInternal( if (poDS) { auto poDriver = poDS->GetDriver(); - const char *pszMetadataItem = - poDriver->GetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES); - if (pszMetadataItem) - aosNativeTypes = CSLTokenizeString2(pszMetadataItem, " ", 0); + if (poDriver) + { + const char *pszMetadataItem = + poDriver->GetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES); + if (pszMetadataItem) + aosNativeTypes = CSLTokenizeString2(pszMetadataItem, " ", 0); + } } if (schema->dictionary && @@ -7374,10 +7377,13 @@ bool OGRLayer::WriteArrowBatch(const struct ArrowSchema *schema, if (poDS) { auto poDriver = poDS->GetDriver(); - const char *pszMetadataItem = - poDriver->GetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES); - if (pszMetadataItem) - aosNativeTypes = CSLTokenizeString2(pszMetadataItem, " ", 0); + if (poDriver) + { + const char *pszMetadataItem = + poDriver->GetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES); + if (pszMetadataItem) + aosNativeTypes = CSLTokenizeString2(pszMetadataItem, " ", 0); + } } std::vector asFieldInfo; diff --git a/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp b/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp index 1a9d14dcec01..3302b5d938d9 100644 --- a/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp +++ b/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp @@ -6185,6 +6185,8 @@ GDALDataset *OGRMVTWriterDataset::Create(const char *pszFilename, int nXSize, } poDS->SetDescription(pszFilename); + poDS->poDriver = GDALDriver::FromHandle(GDALGetDriverByName("MVT")); + return poDS; }