From 406b4b38735848e35adcd3f7eac69c650f8be848 Mon Sep 17 00:00:00 2001 From: michi_cc Date: Sun, 31 Oct 2010 16:16:28 +0000 Subject: (svn r21065) -Fix (r19733): Crash when displaying 60+x parameters in the NewGRF inspect window. --- src/newgrf_debug_gui.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/newgrf_debug_gui.cpp') diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index ef2802bf9..8b2b4bf96 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -205,6 +205,16 @@ struct NIFeature { /* Load all the NewGRF debug data; externalised as it is just a huge bunch of tables. */ #include "table/newgrf_debug_data.h" +/** + * Get the feature number related to the window number. + * @param window_number The window to get the feature number for. + * @return The feature number. + */ +static inline GrfSpecFeature GetFeatureNum(uint window_number) +{ + return (GrfSpecFeature)GB(window_number, 24, 8); +} + /** * Get the NIFeature related to the window number. * @param window_number The window to get the NIFeature for. @@ -212,7 +222,7 @@ struct NIFeature { */ static inline const NIFeature *GetFeature(uint window_number) { - byte idx = GB(window_number, 24, 8); + GrfSpecFeature idx = GetFeatureNum(window_number); return idx < GSF_FAKE_END ? _nifeatures[idx] : NULL; } @@ -324,7 +334,7 @@ struct NewGRFInspectWindow : Window { this->DrawString(r, i++, "Variables:"); for (const NIVariable *niv = nif->variables; niv->name != NULL; niv++) { bool avail = true; - uint param = HasVariableParameter(niv->var) ? NewGRFInspectWindow::var60params[index][niv->var - 0x60] : 0; + uint param = HasVariableParameter(niv->var) ? NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][niv->var - 0x60] : 0; uint value = nih->Resolve(index, niv->var, param, &avail); if (!avail) continue; @@ -446,7 +456,7 @@ struct NewGRFInspectWindow : Window { { if (StrEmpty(str)) return; - NewGRFInspectWindow::var60params[GetFeatureIndex(this->window_number)][this->current_edit_param - 0x60] = strtol(str, NULL, 16); + NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][this->current_edit_param - 0x60] = strtol(str, NULL, 16); this->SetDirty(); } -- cgit v1.2.3-54-g00ecf