--- ./src/multiplay.h 2008/11/13 22:42:02 6282
+++ ./src/multiplay.h 2008/11/13 22:42:05 6283
@@ -118,9 +118,9 @@
extern WZ_DECL_WARN_UNUSED_RESULT DROID_TEMPLATE *IdToTemplate(UDWORD tempId,UDWORD player);
extern WZ_DECL_WARN_UNUSED_RESULT DROID_TEMPLATE *NameToTemplate(const char *sName,UDWORD player);
-extern char *getPlayerName (UDWORD player);
+extern const char* getPlayerName(unsigned int player);
extern BOOL setPlayerName (UDWORD player, const char *sName);
-extern char *getPlayerColourName(SDWORD player);
+extern const char* getPlayerColourName(unsigned int player);
extern BOOL isHumanPlayer (UDWORD player); //to tell if the player is a computer or not.
extern BOOL myResponsibility (UDWORD player);
extern BOOL responsibleFor (UDWORD player, UDWORD playerinquestion);
--- ./src/multiplay.c 2008/11/13 22:42:02 6282
+++ ./src/multiplay.c 2008/11/13 22:42:05 6283
@@ -80,7 +80,6 @@
BOOL bSendingMap = false; // map broadcasting.
-char tempString[12];
char beaconReceiveMsg[MAX_PLAYERS][MAX_CONSOLE_STRING_LENGTH]; //beacon msg for each player
char playerName[MAX_PLAYERS][MAX_STR_LENGTH]; //Array to store all player names (humans and AIs)
BOOL bPlayerReadyGUI[MAX_PLAYERS] = {false};
@@ -433,7 +432,7 @@
// ////////////////////////////////////////////////////////////////////////////
// return a players name.
-char *getPlayerName(UDWORD player)
+const char* getPlayerName(unsigned int player)
{
UDWORD i;
@@ -455,7 +454,7 @@
return getPlayerColourName(player);
}
- return (char*)&NetPlay.players[i].name;
+ return NetPlay.players[i].name;
}
}
@@ -1903,35 +1902,28 @@
return addBeaconBlip(locX, locY, receiver, sender, beaconReceiveMsg[sender]);
}
-static const char* playerColors[] =
+const char* getPlayerColourName(unsigned int player)
{
- N_("Green"),
- N_("Orange"),
- N_("Grey"),
- N_("Black"),
- N_("Red"),
- N_("Blue"),
- N_("Pink"),
- N_("Cyan")
-};
-
-char *getPlayerColourName(SDWORD player)
-{
- static const unsigned int end = sizeof(playerColors) / sizeof(const char*);
+ static const char* playerColors[] =
+ {
+ N_("Green"),
+ N_("Orange"),
+ N_("Grey"),
+ N_("Black"),
+ N_("Red"),
+ N_("Blue"),
+ N_("Pink"),
+ N_("Cyan")
+ };
- ASSERT(player < end,
- "getPlayerColourName: player number (%d) exceeds maximum (%d)\n", player, end - 1);
+ ASSERT(player < ARRAY_SIZE(playerColors), "player number (%d) exceeds maximum (%zu)", player, ARRAY_SIZE(playerColors));
- if (player < end)
- {
- strcpy(tempString, _(playerColors[ getPlayerColour(player) ]));
- }
- else
+ if (player >= ARRAY_SIZE(playerColors))
{
- tempString[0] = '0';
+ return "";
}
- return tempString;
+ return gettext(playerColors[getPlayerColour(player)]);
}
/*
--- ./src/scriptfuncs.c 2008/11/13 22:42:02 6282
+++ ./src/scriptfuncs.c 2008/11/13 22:42:05 6283
@@ -5919,7 +5919,10 @@
return false;
}
- scrFunctionResult.v.sval = getPlayerColourName(player);
+ /* Casting away constness because stackPushResult doesn't modify it's
+ * value (i.e. in this case it's not const correct).
+ */
+ scrFunctionResult.v.sval = (char*)getPlayerColourName(player);
if (!stackPushResult(VAL_STRING, &scrFunctionResult))
{
debug(LOG_ERROR, "scrGetPlayerColourName(): failed to push result");
@@ -10745,7 +10748,10 @@
return false;
}
- scrFunctionResult.v.sval = getPlayerName((UDWORD)player);
+ /* Casting away constness because stackPushResult doesn't modify it's
+ * value (i.e. in this case it's not const correct).
+ */
+ scrFunctionResult.v.sval = (char*)getPlayerName((UDWORD)player);
if (!stackPushResult(VAL_STRING, &scrFunctionResult))
{
debug(LOG_ERROR, "scrGetPlayerName(): failed to push result");
@@ -10791,7 +10797,7 @@
{
/* check name */
//debug(LOG_SCRIPT, "checking (%s,%s)",getPlayerName(playerIndex), playerName);
- if (strncasecmp(getPlayerName(playerIndex),playerName, 255) == 0)
+ if (strncasecmp(getPlayerName(playerIndex), playerName, 255) == 0)
{
//debug(LOG_SCRIPT, "matched, returning %d", playerIndex);
return playerIndex;
@@ -10799,7 +10805,7 @@
/* check color */
//debug(LOG_SCRIPT, "checking (%s,%s)",getPlayerColourName(playerIndex), playerName);
- if (strncasecmp(getPlayerColourName(playerIndex),playerName, 255) == 0)
+ if (strncasecmp(getPlayerColourName(playerIndex), playerName, 255) == 0)
{
//debug(LOG_SCRIPT, "matched, returning %d", playerIndex);
return playerIndex;