Skip to content

Commit

Permalink
win32 vs random.c
Browse files Browse the repository at this point in the history
     From a bug report.
Pointer subtraction yields a result of type ptrdiff_t which can be
bigger than type long, potentially resulting in warnings about value
truncation--in these cases, when assigning to a long.
  • Loading branch information
nethack.rankin committed Dec 23, 2007
1 parent d0a7d15 commit 9c3f6f7
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions sys/share/random.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* means the defined()s would be ok again...
* - change fprintf(stderr, "x(%d)y\n", z) to impossible("x(%d)y", z)
* - remove useless variable `j' from srandom()
* - cast result of pointer subtraction to long since ptrdiff_t could
* be bigger than that and trigger warnings when assigning to long
*/

#include "hack.h"
Expand Down Expand Up @@ -250,7 +252,7 @@ initstate( seed, arg_state, n )
register char *ostate = (char *)( &state[ -1 ] );

if( rand_type == TYPE_0 ) state[ -1 ] = rand_type;
else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type;
else state[ -1 ] = (long)(MAX_TYPES*(rptr - state) + rand_type);
if( n < BREAK_1 ) {
if( n < BREAK_0 ) {
impossible(
Expand Down Expand Up @@ -291,7 +293,7 @@ initstate( seed, arg_state, n )
end_ptr = &state[ rand_deg ]; /* must set end_ptr before srandom */
srandom( seed );
if( rand_type == TYPE_0 ) state[ -1 ] = rand_type;
else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type;
else state[ -1 ] = (long)(MAX_TYPES*(rptr - state) + rand_type);
return( ostate );
}

Expand Down Expand Up @@ -320,7 +322,7 @@ setstate( arg_state )
char *ostate = (char *)( &state[ -1 ] );

if( rand_type == TYPE_0 ) state[ -1 ] = rand_type;
else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type;
else state[ -1 ] = (long)(MAX_TYPES*(rptr - state) + rand_type);
switch( type ) {
case TYPE_0:
case TYPE_1:
Expand Down

0 comments on commit 9c3f6f7

Please sign in to comment.