This is the fix I prefer for dealing with both the undefined string error and ambiguity about parsing city names.

Now if the city name hasn't been found and and address *has* been found, we
give up on finding the city name rather than assuming the city name is the last single word
in the address string. 

If the city name is more than one word or the city name is simply missing, then
both the address and the city name will end up wrong.

Better to just leave the city name empty in that case.