I am talking about the disappearing world names problem. It’s unbelievable. If you think of something long enough, eventually you’ll find the answer.
I could not reproduce it. The reports I had were scarce (massive thanks to everyone who took time to give me info, some of you even made videos – you know who you are). On the surface, nothing tied the reports together. It was hopeless. I tried it again and again on all my test devices (and I have a large box full of them) – could not reproduce it on anything, from ancient 2010-vintage phones to Nexus 5. The only difference my 1.26 changes made were to load world information on a separate thread, to let the UI display the “scanning worlds” dialog.
The screenshots and videos of the problem you sent me showed that sizes and dates of the worlds are determined correctly. Only names and game modes were screwed. This was some lead. I looked through the code and located a likely place where it must be going wrong to produce this exact effect.
The problem is, it had no right to go wrong in that place, or anywhere else. It was the same code as in 1.25.
Then it dawned on me, literally just minutes ago. For those of you who have no idea about programming, the below explanation will make no sense, but I have to write it anyway. Sorry :-)
It’s the thread locale. Old enemy. When creating the thread I forgot to set the locale to invariant. All string operations (e.g. parsing of numbers) are then done using the system’s locale. In some countries they use a comma (,) instead of a dot to separate fractional part of a number. Because all numbers in the project file are saved with dots, the parsing of numbers will fail. This will only happen if your device language is set to non-english, and your country uses commas.
I confirmed it by changing system language on my test phone. Immediately got blank names. Lovely :-)
Trivial to fix. Obviously, after the fact you can see that all the bug reports are from non-english people…
If anytime again I have a bug that I cannot fix, please remind me of thread locales. Lest we forget.