Hi Gerd,
I think the problem with Ottawa is a problem with the data. The current Ottawa boundary describes a municipal level entity composed of the a bunch of former small cities (including the city of Ottawa which is now downtown area of Ottawa).
Looking at Canada in the administrative boundary list and using Toronto as an example, the current Ottawa boundary should be admin level 8.
The suburbs within Ottawa (the former full cities) should be admin level 10. Again there are no boundaries but these suburbs are used officially for addresses. For instance, you can find Kanata listed in the Canada Post postal code lookup app.
https://www.canadapost.ca/cpo/mc/personal/postalcode/fpc.jsfIt looks like the address setup in mkgmap is incorrect for this setup because admin level 10 is what people use for addresses in the big cities in Canada. I can fix this and send a patch.
As for your original question, I think adding the safety catch at the end would be a good idea just in case there are other areas that have broken data.
or should we add a one to this block:
mkgmap:city!=* & mkgmap:admin_level8=* { set mkgmap:city='${mkgmap:admin_level8}' }
mkgmap:city!=* & mkgmap:admin_level7=* { set mkgmap:city='${mkgmap:admin_level7}' }
mkgmap:city!=* & mkgmap:admin_level9=* { set mkgmap:city='${mkgmap:admin_level9}' }
mkgmap:city!=* & mkgmap:admin_level10=* { set mkgmap:city='${mkgmap:admin_level10}' }
e.g. a further line with
mkgmap:city!=* & mkgmap:admin_level6=* { set mkgmap:city='${mkgmap:admin_level6}' }
Nice catch! Thanks, Ben