FS#2972 - wrong strings in newgrf display on join game

Attached to Project: OpenTTD
Opened by Ingo von Borstel (planetmaker) - Tuesday, 09 June 2009, 22:20 GMT
Last edited by Remko Bijker (Rubidium) - Thursday, 17 September 2009, 21:14 GMT
Type Bug
Category Interface
Status Closed
Assigned To No-one
Operating System All
Severity Low
Priority Normal
Reported Version trunk
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


The attached screen can be reproduced by joining a multiplayer server where you don't have all necessary newgrf but the missing one is on bananas.
How to reproduce:
1) Select the server in the multiplayer window
2) click "newgrf settings" in the multiplayer window
3) click "find online content"
4) select the missing grf and press "download" in the "content downloading" window
5) press "ok" in the "downloading..." window after download finished
6) press "cancel" in the "content downloading" window (kinda stupid name for the button, eh?)
7) click "newgrf settings" in the multiplayer window

Problem: it does NOT seem to work 100% of the time in order to reproduce it, but in a good 80% of the cases or so.
Test binary linux-generic-i686

I tested with r16520 (as shown in screenshot) on our currently running publicserver.
This task depends upon

Closed by  Remko Bijker (Rubidium)
Thursday, 17 September 2009, 21:14 GMT
Reason for closing:  Fixed
Additional comments about closing:  In r17562
Comment by Ingo von Borstel (planetmaker) - Tuesday, 09 June 2009, 22:26 GMT
additional information: the "funny" text shown differed with every try when I tried to make this "how-to-reproduce" step-by-step list.
And don't close the newgrf list window inbetween.
Comment by Zdeněk Sojka (SmatZ) - Saturday, 13 June 2009, 19:26 GMT
Probable cause:

GRFConfig **orig_list; in NewGRFWindow
GRFConfig **list; in NewGRFAddWindow

(I reproduced the crash with the NewGRFAddWindow - game crashes when the window is open and new GRFs are downloaded)
Comment by Remko Bijker (Rubidium) - Friday, 28 August 2009, 20:58 GMT
I still have not been able to reproduce it on my machine :(
Comment by Zdeněk Sojka (SmatZ) - Wednesday, 16 September 2009, 23:50 GMT
Attached is valgrind output.
The "recently free'd place" can be invalid (freed at one place -> allocated at different place -> freed -> invalid read, reporting second free() instead of first one)

Comment by Zdeněk Sojka (SmatZ) - Thursday, 17 September 2009, 10:18 GMT
Main screen -> Multiplayer -> choose a server where you have many missing GRFs (like #openttdcoop Public) -> NewGRF Settings -> Find Missing Content Online -> Select All -> Download -> Close -> close NewGRF Settings -> DON'T click "Refresh Server" -> NewGRF Settings -> strings are broken