Update of /cvsroot/netrek/client/netrekxp/src
In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv20255/src
Modified Files:
death.c socket.c
Log Message:
SP_RANK, update to new packet protocol.
Adopt COW handleRank(), more robust code.
Add check to promotion message for valid rank.
Index: death.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/death.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- death.c 16 Apr 2008 00:08:09 -0000 1.22
+++ death.c 28 May 2009 01:19:16 -0000 1.23
@@ -89,7 +89,10 @@
if (promoted)
{
- sprintf (rankmessage, "Congratulations, You have scummed up to %s",
+ if (mystats->st_rank >= nranks)
+ sprintf (rankmessage, "Congratulations, you have been promoted!");
+ else
+ sprintf (rankmessage, "Congratulations, you have scummed up to %s!",
paradise ? ranks2[mystats->st_rank].name : ranks[mystats->st_rank].name);
W_WriteText (w, 50, 80, W_Yellow, rankmessage,
strlen (rankmessage), W_BoldFont);
Index: socket.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/socket.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- socket.c 27 May 2009 23:07:05 -0000 1.63
+++ socket.c 28 May 2009 01:19:16 -0000 1.64
@@ -2812,24 +2812,22 @@
void
handleRank (struct rank_spacket *packet)
{
- int i = packet->rankn;
- int size;
+ int i = packet->rnum;
+ int j = packet->rmax + 1;
#ifdef CORRUPTED_PACKETS
- if (i > nranks)
+ if (i < 0 || j < 0 || i > j)
{
- LineToConsole ("handleRanks: bad index\n");
+ LineToConsole ("handleRanks: invalid rnum or rmax\n");
return;
}
#endif
- /* A new rank. Reallocate memory as necessary. */
- if (i == nranks)
+ /* Reallocate rank memory as necessary. */
+ if (j > nranks)
{
- size = sizeof(struct rank) * ( nranks + 1 );
- ranks = (struct rank *) realloc(ranks, size);
- ranks[nranks].name = strdup("blank");
- ranks[nranks].cname = strdup("UNKN");
- nranks++;
+ ranks = (struct rank *) realloc(ranks, j * sizeof(struct rank));
+ memset(&ranks[nranks], 0, (j - nranks) * sizeof(struct rank));
+ nranks = j;
W_ResizeTextWindow(rankw, 80, nranks + 9);
}
packet->name[15] = 0;
@@ -5319,8 +5317,9 @@
case SP_RANK :
LineToConsole("\nS->C SP_RANK\t");
if (log_packets > 1)
- LineToConsole(" rankn=%d, name=\"%s\", hours=%d, ratings=%d, offense=%d, cname=\"%s\"",
- ((struct rank_spacket *) packet)->rankn,
+ LineToConsole(" rnum=%d, rmax=%d, name=\"%s\", hours=%d, ratings=%d, offense=%d, cname=\"%s\"",
+ ((struct rank_spacket *) packet)->rnum,
+ ((struct rank_spacket *) packet)->rmax,
((struct rank_spacket *) packet)->name,
ntohl(((struct rank_spacket *) packet)->hours),
ntohl(((struct rank_spacket *) packet)->ratings),