Author: sveinung
Date: Wed Aug 20 11:16:12 2014
New Revision: 25958

URL: http://svn.gna.org/viewcvs/freeciv?rev=25958&view=rev
Log:
SDL clients: Fix segfault during industrial sabotage in a city with no buildings

The dialog were the building to sabotage would only initialize the variable
pEndActiveWidgetList when the city had at least one building to sabotage. It
would the read it later. Always initialize it.

See bug #22495

Modified:
    trunk/client/gui-sdl/diplomat_dialog.c
    trunk/client/gui-sdl2/diplomat_dialog.c

Modified: trunk/client/gui-sdl/diplomat_dialog.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl/diplomat_dialog.c?rev=25958&r1=25957&r2=25958&view=diff
==============================================================================
--- trunk/client/gui-sdl/diplomat_dialog.c      (original)
+++ trunk/client/gui-sdl/diplomat_dialog.c      Wed Aug 20 11:16:12 2014
@@ -990,6 +990,9 @@
     
   add_to_gui_list(ID_SEPARATOR, pBuf);
   area.h += pBuf->next->size.h;
+
+  pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
+
   /* ------------------ */
   n = 0;
   city_built_iterate(pCity, pImprove) {
@@ -1005,11 +1008,6 @@
     
       area.w = MAX(area.w , pBuf->size.w);
       imp_h += pBuf->size.h;
-      
-      if (!pDiplomat_Dlg->pdialog->pEndActiveWidgetList)
-      {
-       pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
-      }
     
       if (n > 9) {
         set_wflag(pBuf, WF_HIDDEN);

Modified: trunk/client/gui-sdl2/diplomat_dialog.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/diplomat_dialog.c?rev=25958&r1=25957&r2=25958&view=diff
==============================================================================
--- trunk/client/gui-sdl2/diplomat_dialog.c     (original)
+++ trunk/client/gui-sdl2/diplomat_dialog.c     Wed Aug 20 11:16:12 2014
@@ -990,6 +990,9 @@
     
   add_to_gui_list(ID_SEPARATOR, pBuf);
   area.h += pBuf->next->size.h;
+
+  pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
+
   /* ------------------ */
   n = 0;
   city_built_iterate(pCity, pImprove) {
@@ -1005,11 +1008,6 @@
     
       area.w = MAX(area.w , pBuf->size.w);
       imp_h += pBuf->size.h;
-      
-      if (!pDiplomat_Dlg->pdialog->pEndActiveWidgetList)
-      {
-       pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
-      }
     
       if (n > 9) {
         set_wflag(pBuf, WF_HIDDEN);


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to