diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 960c8e0b9a74d97bb98513ccb488cd8dd43af36b..ac35e9276d0c50234bc3d7a5845e087ee0828cdc 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: builtin_functions.c,v 1.297 2000/08/15 11:07:32 grubba Exp $"); +RCSID("$Id: builtin_functions.c,v 1.298 2000/08/16 10:19:22 grubba Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -4040,7 +4040,7 @@ static struct array* diff_build(struct array *a, struct array *seq) { struct array *ad,*bd; - int bi,ai,lbi,lai,i,eqstart; + ptrdiff_t bi, ai, lbi, lai, i, eqstart; /* FIXME(?) memory unfreed upon error here (and later) */ ad=low_allocate_array(0,32); diff --git a/src/docode.c b/src/docode.c index b3cdadf1b935d8facd30a1ec6d81389d849bf18f..6c179c65bd12a4733d8058cb80931c3232221235 100644 --- a/src/docode.c +++ b/src/docode.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: docode.c,v 1.78 2000/08/15 16:13:55 grubba Exp $"); +RCSID("$Id: docode.c,v 1.79 2000/08/16 10:49:19 grubba Exp $"); #include "las.h" #include "program.h" #include "pike_types.h" @@ -343,9 +343,9 @@ static int do_docode2(node *n,int flags) if(!CDDR(n)) { tmp1=alloc_label(); - do_jump_when_zero(CAR(n), tmp1); + do_jump_when_zero(CAR(n), DO_NOT_WARN((INT32)tmp1)); DO_CODE_BLOCK(CADR(n)); - emit1(F_LABEL, tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp1)); current_switch_jumptable = prev_switch_jumptable; return 0; } @@ -353,22 +353,22 @@ static int do_docode2(node *n,int flags) if(!CADR(n)) { tmp1=alloc_label(); - do_jump_when_non_zero(CAR(n), tmp1); + do_jump_when_non_zero(CAR(n), DO_NOT_WARN((INT32)tmp1)); DO_CODE_BLOCK(CDDR(n)); - emit1(F_LABEL,tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp1)); current_switch_jumptable = prev_switch_jumptable; return 0; } tmp1=alloc_label(); - do_jump_when_zero(CAR(n),tmp1); + do_jump_when_zero(CAR(n), DO_NOT_WARN((INT32)tmp1)); adroppings=do_docode(CADR(n), flags); tmp3=emit1(F_POP_N_ELEMS,0); /* Else */ tmp2=do_jump(F_BRANCH,-1); - emit1(F_LABEL, tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp1)); bdroppings=do_docode(CDDR(n), flags); if(adroppings < bdroppings) @@ -378,11 +378,12 @@ static int do_docode2(node *n,int flags) if(adroppings > bdroppings) { - update_arg(tmp3,adroppings-bdroppings); + update_arg(DO_NOT_WARN((INT32)tmp3), + adroppings - bdroppings); adroppings=bdroppings; } - emit1(F_LABEL, tmp2); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp2)); current_switch_jumptable = prev_switch_jumptable; return adroppings; @@ -531,9 +532,9 @@ static int do_docode2(node *n,int flags) case F_LAND: case F_LOR: tmp1=alloc_label(); - do_cond_jump(CAR(n), tmp1, n->token == F_LOR, 0); + do_cond_jump(CAR(n), DO_NOT_WARN((INT32)tmp1), n->token == F_LOR, 0); code_expression(CDR(n), flags, n->token == F_LOR ? "||" : "&&"); - emit1(F_LABEL,tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp1)); return 1; case F_EQ: @@ -562,7 +563,7 @@ static int do_docode2(node *n,int flags) if(do_docode(CDR(n),DO_NOT_COPY)!=2) fatal("Compiler internal error (at %ld).\n",(long)lex.current_line); emit0(n->token); - return tmp1; + return DO_NOT_WARN((INT32)tmp1); case F_INC: case F_POST_INC: @@ -617,7 +618,7 @@ static int do_docode2(node *n,int flags) }else{ tmp2=ins_label(-1); } - do_jump_when_non_zero(CAR(n),tmp2); + do_jump_when_non_zero(CAR(n), DO_NOT_WARN((INT32)tmp2)); ins_label(current_break); current_switch_jumptable = prev_switch_jumptable; @@ -672,8 +673,8 @@ static int do_docode2(node *n,int flags) tmp1=ins_label(-1); DO_CODE_BLOCK(CDR(n)); ins_label(current_continue); - emit1(F_LABEL,tmp3); - do_jump(n->token,tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp3)); + do_jump(n->token, DO_NOT_WARN((INT32)tmp1)); ins_label(current_break); #ifdef PIKE_DEBUG @@ -715,8 +716,8 @@ static int do_docode2(node *n,int flags) DO_CODE_BLOCK(CDR(n)); ins_label(current_continue); - emit1(F_LABEL,tmp3); - do_jump(n->token,tmp1); + emit1(F_LABEL, DO_NOT_WARN((INT32)tmp3)); + do_jump(n->token, DO_NOT_WARN((INT32)tmp1)); ins_label(current_break); #ifdef PIKE_DEBUG if(d_flag) @@ -743,7 +744,7 @@ static int do_docode2(node *n,int flags) tmp2=ins_label(-1); DO_CODE_BLOCK(CAR(n)); ins_label(current_continue); - do_jump_when_non_zero(CDR(n),tmp2); + do_jump_when_non_zero(CDR(n), DO_NOT_WARN((INT32)tmp2)); ins_label(current_break); current_switch_jumptable = prev_switch_jumptable; @@ -765,11 +766,11 @@ static int do_docode2(node *n,int flags) return 0; } tmp1=store_prog_string(n->type); - emit1(F_STRING,tmp1); + emit1(F_STRING, DO_NOT_WARN((INT32)tmp1)); tmp1=do_docode(CAR(n),0); if(!tmp1) { emit0(F_CONST0); tmp1=1; } - if(tmp1>1) do_pop(tmp1-1); + if(tmp1>1) do_pop(DO_NOT_WARN((INT32)(tmp1-1))); emit0(F_CAST); return 1; @@ -777,15 +778,15 @@ static int do_docode2(node *n,int flags) case F_SOFT_CAST: if (runtime_options & RUNTIME_CHECK_TYPES) { tmp1 = store_prog_string(n->type); - emit1(F_STRING, tmp1); + emit1(F_STRING, DO_NOT_WARN((INT32)tmp1)); tmp1 = do_docode(CAR(n), 0); if (!tmp1) { emit0(F_CONST0); tmp1 = 1; } - if (tmp1 > 1) do_pop(tmp1 - 1); + if (tmp1 > 1) do_pop(DO_NOT_WARN((INT32)(tmp1 - 1))); emit0(F_SOFT_CAST); return 1; } tmp1 = do_docode(CAR(n), flags); - if (tmp1 > 1) do_pop(tmp1 - 1); + if (tmp1 > 1) do_pop(DO_NOT_WARN((INT32)(tmp1 - 1))); return !!tmp1; case F_APPLY: @@ -803,7 +804,7 @@ static int do_docode2(node *n,int flags) tmp1=store_constant(& CAR(n)->u.sval, !(CAR(n)->tree_info & OPT_EXTERNAL_DEPEND), CAR(n)->name); - emit1(F_APPLY,tmp1); + emit1(F_APPLY, DO_NOT_WARN((INT32)tmp1)); } if(n->type == void_type_string) return 0; @@ -820,7 +821,7 @@ static int do_docode2(node *n,int flags) tmp1=store_constant(& CAR(n)->u.sval, !(CAR(n)->tree_info & OPT_EXTERNAL_DEPEND), CAR(n)->name); - emit1(F_APPLY,tmp1); + emit1(F_APPLY, DO_NOT_WARN((INT32)tmp1)); return 1; } @@ -855,7 +856,7 @@ static int do_docode2(node *n,int flags) }else{ /* We might want to put "predef::"+foo->name here /Hubbe */ tmp1=store_constant(& foo->u.sval, 1, foo->name); - emit1(F_APPLY, tmp1); + emit1(F_APPLY, DO_NOT_WARN((INT32)tmp1)); } } free_node(foo); @@ -866,7 +867,7 @@ static int do_docode2(node *n,int flags) case F_COMMA_EXPR: tmp1=do_docode(CAR(n),flags & ~WANT_LVALUE); tmp1+=do_docode(CDR(n),flags); - return tmp1; + return DO_NOT_WARN((INT32)tmp1); /* Switch: @@ -967,7 +968,8 @@ static int do_docode2(node *n,int flags) for(e=1; e<cases*2+2; e++) update_arg(jumptable[e], current_switch_jumptable[e]); - update_arg(tmp1, store_constant(Pike_sp-1,1,0)); + update_arg(DO_NOT_WARN((INT32)tmp1), + store_constant(Pike_sp-1,1,0)); pop_stack(); free((char *)jumptable); @@ -1110,7 +1112,7 @@ static int do_docode2(node *n,int flags) case F_SSCANF: tmp1=do_docode(CAR(n),DO_NOT_COPY); tmp2=do_docode(CDR(n),DO_NOT_COPY | DO_LVALUE); - emit1(F_SSCANF,tmp1+tmp2); + emit1(F_SSCANF, DO_NOT_WARN((INT32)(tmp1+tmp2))); return 1; case F_CATCH: @@ -1128,7 +1130,7 @@ static int do_docode2(node *n,int flags) ins_label(current_continue); ins_label(current_break); emit0(F_THROW_ZERO); - ins_label(tmp1); + ins_label(DO_NOT_WARN((INT32)tmp1)); current_break=break_save; current_continue=continue_save; @@ -1145,7 +1147,7 @@ static int do_docode2(node *n,int flags) if(tmp1 & 1) fatal("Very internal compiler error.\n"); #endif - emit1(F_ARRAY_LVALUE, tmp1>>1); + emit1(F_ARRAY_LVALUE, DO_NOT_WARN((INT32)(tmp1>>1))); return 2; case F_ARROW: @@ -1167,7 +1169,7 @@ static int do_docode2(node *n,int flags) emit0(F_COPY_VALUE); } } - return tmp1; + return DO_NOT_WARN((INT32)tmp1); case F_INDEX: if(flags & WANT_LVALUE) @@ -1207,7 +1209,7 @@ static int do_docode2(node *n,int flags) emit0(F_COPY_VALUE); } } - return tmp1; + return DO_NOT_WARN((INT32)tmp1); case F_CONSTANT: switch(n->u.sval.type) @@ -1223,7 +1225,7 @@ static int do_docode2(node *n,int flags) case T_STRING: tmp1=store_prog_string(n->u.sval.u.string); - emit1(F_STRING,tmp1); + emit1(F_STRING, DO_NOT_WARN((INT32)tmp1)); return 1; case T_FUNCTION: @@ -1258,7 +1260,7 @@ static int do_docode2(node *n,int flags) tmp1=store_constant(&(n->u.sval), !(n->tree_info & OPT_EXTERNAL_DEPEND), n->name); - emit1(F_CONSTANT,tmp1); + emit1(F_CONSTANT, DO_NOT_WARN((INT32)tmp1)); return 1; case T_ARRAY: @@ -1267,7 +1269,7 @@ static int do_docode2(node *n,int flags) tmp1=store_constant(&(n->u.sval), !(n->tree_info & OPT_EXTERNAL_DEPEND), n->name); - emit1(F_CONSTANT,tmp1); + emit1(F_CONSTANT, DO_NOT_WARN((INT32)tmp1)); /* copy now or later ? */ if(!(flags & DO_NOT_COPY) && !(n->tree_info & OPT_EXTERNAL_DEPEND)) diff --git a/src/encode.c b/src/encode.c index e4a9901b52a3597d61d8b422f7614dc8a3e53fff..bc2bffed7af15d239e7fdd4884215f210d4f3ffa 100644 --- a/src/encode.c +++ b/src/encode.c @@ -25,7 +25,7 @@ #include "version.h" #include "bignum.h" -RCSID("$Id: encode.c,v 1.66 2000/08/15 16:15:43 grubba Exp $"); +RCSID("$Id: encode.c,v 1.67 2000/08/16 10:50:42 grubba Exp $"); /* #define ENCODE_DEBUG */ @@ -1595,7 +1595,7 @@ static INT32 my_decode(struct pike_string *tmp, /* Compatibilidy decoder */ -static unsigned char extract_char(char **v, INT32 *l) +static unsigned char extract_char(char **v, ptrdiff_t *l) { if(!*l) error("Format error, not enough place for char.\n"); else (*l)--; @@ -1603,7 +1603,7 @@ static unsigned char extract_char(char **v, INT32 *l) return ((unsigned char *)(*v))[-1]; } -static ptrdiff_t extract_int(char **v, INT32 *l) +static ptrdiff_t extract_int(char **v, ptrdiff_t *l) { INT32 j; ptrdiff_t i; @@ -1619,7 +1619,7 @@ static ptrdiff_t extract_int(char **v, INT32 *l) return i; } -static void rec_restore_value(char **v, INT32 *l) +static void rec_restore_value(char **v, ptrdiff_t *l) { ptrdiff_t t, i; diff --git a/src/gc.c b/src/gc.c index 2a42be9988062475962cefde256d5cd8f976072f..d9f46401bb543be523a89adc379502cf63f0cd6a 100644 --- a/src/gc.c +++ b/src/gc.c @@ -30,7 +30,7 @@ struct callback *gc_evaluator_callback=0; #include "block_alloc.h" -RCSID("$Id: gc.c,v 1.121 2000/08/13 15:12:55 grubba Exp $"); +RCSID("$Id: gc.c,v 1.122 2000/08/16 10:35:48 grubba Exp $"); /* Run garbage collect approximately every time * 20 percent of all arrays, objects and programs is @@ -599,6 +599,16 @@ int debug_gc_check(void *x, TYPE_T t, void *data) return ret; } +/* Avoid loss of precision warning. */ +#ifdef __ECL +static inline long SIZE_T_TO_LONG(size_t x) +{ + return DO_NOT_WARN((long)x); +} +#else /* !__ECL */ +#define SIZE_T_TO_LONG(x) ((long)(x)) +#endif /* __ECL */ + void low_describe_something(void *a, int t, int indent, @@ -684,7 +694,7 @@ void low_describe_something(void *a, foo=1; break; } - if(pos+1>=(long)p->num_program) + if(pos+1>=(ptrdiff_t)p->num_program) break; } #if 0 @@ -709,7 +719,7 @@ void low_describe_something(void *a, { #define FOO(NUMTYPE,TYPE,NAME) \ fprintf(stderr, "%*s* " #NAME " %p[%ld]\n", \ - indent, "", p->NAME, (long)p->PIKE_CONCAT(num_,NAME)); + indent, "", p->NAME, SIZE_T_TO_LONG(p->PIKE_CONCAT(num_,NAME))); #include "program_areas.h" } diff --git a/src/las.c b/src/las.c index 73d40a10e94bfaf1c6a4d1b715a0d0a438fdb9b8..1db6710d529d39d8f033630ea9496e33a13c6b67 100644 --- a/src/las.c +++ b/src/las.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: las.c,v 1.190 2000/08/15 17:35:24 grubba Exp $"); +RCSID("$Id: las.c,v 1.191 2000/08/16 10:20:23 grubba Exp $"); #include "language.h" #include "interpret.h" @@ -3718,7 +3718,7 @@ ptrdiff_t eval_low(node *n) num_strings=Pike_compiler->new_program->num_strings; num_constants=Pike_compiler->new_program->num_constants; - jump=PC; + jump = DO_NOT_WARN((INT32)PC); store_linenumbers=0; docode(dmalloc_touch(node *, n)); @@ -3972,7 +3972,8 @@ int dooptcode(struct pike_string *name, #ifdef PIKE_DEBUG if(a_flag > 1) - fprintf(stderr,"Doing function '%s' at %x\n",name->str,PC); + fprintf(stderr, "Doing function '%s' at %lx\n", name->str, + DO_NOT_WARN((unsigned long)PC)); #endif args=count_arguments(type); diff --git a/src/module_support.c b/src/module_support.c index a4202915ff2ed96957b1b4940386d043a91c8bbc..1c3e159dc27f425ea49d99a35ccacef1445a60dd 100644 --- a/src/module_support.c +++ b/src/module_support.c @@ -6,7 +6,7 @@ #include "pike_types.h" #include "error.h" -RCSID("$Id: module_support.c,v 1.35 2000/08/11 13:35:00 grubba Exp $"); +RCSID("$Id: module_support.c,v 1.36 2000/08/16 10:27:34 grubba Exp $"); /* Checks that args_to_check arguments are OK. * Returns 1 if everything worked ok, zero otherwise. @@ -192,7 +192,7 @@ int va_get_args(struct svalue *s, if(s->type == T_INT) *va_arg(ap, INT_TYPE *)=s->u.integer; else if(s->type == T_FLOAT) - *va_arg(ap, INT_TYPE *)=(INT_TYPE)s->u.float_number; + *va_arg(ap, INT_TYPE *) = DO_NOT_WARN((INT_TYPE)s->u.float_number); else { push_text( "int" ); diff --git a/src/peep.c b/src/peep.c index 00cb6dca154b7e709e2775b3f59dc232644b0979..6983e18a1adb83dded48257e12e164b528c937ba 100644 --- a/src/peep.c +++ b/src/peep.c @@ -15,7 +15,7 @@ #include "bignum.h" #include "opcodes.h" -RCSID("$Id: peep.c,v 1.34 2000/08/14 17:18:06 grubba Exp $"); +RCSID("$Id: peep.c,v 1.35 2000/08/16 10:17:52 grubba Exp $"); struct p_instr_s { @@ -311,7 +311,8 @@ void assemble(void) #ifdef PIKE_DEBUG if((a_flag > 2 && store_linenumbers) || a_flag > 3) { - fprintf(stderr,"===%3d %4x ",c->line,PC); + fprintf(stderr, "===%3d %4lx ", c->line, + DO_NOT_WARN((unsigned long)PC)); dump_instr(c); fprintf(stderr,"\n"); } @@ -346,7 +347,7 @@ void assemble(void) if(labels[c->arg] != -1) fatal("Duplicate label!\n"); #endif - labels[c->arg]=PC; + labels[c->arg] = DO_NOT_WARN((INT32)PC); break; default: @@ -359,7 +360,7 @@ void assemble(void) #ifdef PIKE_DEBUG if(c->arg > max_label || c->arg < 0) fatal("Jump to unknown label?\n"); #endif - tmp=PC; + tmp = DO_NOT_WARN((INT32)PC); ins_int(jumps[c->arg], (void(*)(char))add_to_program); jumps[c->arg]=tmp; break; diff --git a/src/pike_memory.h b/src/pike_memory.h index f09a5c34a560bd52959acd100ec17caec2691f05..e2cfc8c43280b555ed353ce888c8b3c58090a613 100644 --- a/src/pike_memory.h +++ b/src/pike_memory.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: pike_memory.h,v 1.21 2000/08/15 15:55:35 grubba Exp $ + * $Id: pike_memory.h,v 1.22 2000/08/16 10:28:17 grubba Exp $ */ #ifndef MEMORY_H #define MEMORY_H @@ -51,7 +51,7 @@ struct generic_mem_searcher { enum methods method; void *needle; - SIZE_T needlelen; + size_t needlelen; int first_char; } other; } data; diff --git a/src/pike_types.c b/src/pike_types.c index 6a845eafa9def821cb37395ce61766c8d7af67bb..ae124f1a53abd48b76a12388a8c8f044eccd9081 100644 --- a/src/pike_types.c +++ b/src/pike_types.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: pike_types.c,v 1.134 2000/08/15 16:01:14 grubba Exp $"); +RCSID("$Id: pike_types.c,v 1.135 2000/08/16 10:30:46 grubba Exp $"); #include <ctype.h> #include "svalue.h" #include "pike_types.h" @@ -235,16 +235,16 @@ void type_stack_pop_to_mark(void) void type_stack_reverse(void) { - INT32 a; + ptrdiff_t a; a=pop_stack_mark(); reverse((char *)(Pike_compiler->type_stackp-a),a,1); } void push_type_int(INT32 i) { - int e; - for(e=0;e<(int)sizeof(i);e++) - push_type( (i>>(e*8)) & 0xff ); + ptrdiff_t e; + for(e = 0; e < (ptrdiff_t)sizeof(i); e++) + push_type(DO_NOT_WARN((unsigned char)((i>>(e*8)) & 0xff))); } void push_type_int_backwards(INT32 i) @@ -265,7 +265,7 @@ INT32 extract_type_int(char *p) void push_unfinished_type(char *s) { - int e; + ptrdiff_t e; e=type_length(s); for(e--;e>=0;e--) push_type(s[e]); } @@ -336,7 +336,7 @@ void push_finished_type_backwards(struct pike_string *type) struct pike_string *debug_pop_unfinished_type(void) { - int len,e; + ptrdiff_t len, e; struct pike_string *s; len=pop_stack_mark(); s=begin_shared_string(len); diff --git a/src/pike_types.h b/src/pike_types.h index 60f3f12b6e1bfc4d2a5f96be4d1979bbd5ad72a6..89847070eff2d44632cd6ddf6a93b29d8ab95f27 100644 --- a/src/pike_types.h +++ b/src/pike_types.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: pike_types.h,v 1.43 2000/08/15 15:59:49 grubba Exp $ + * $Id: pike_types.h,v 1.44 2000/08/16 10:26:51 grubba Exp $ */ #ifndef PIKE_TYPES_H #define PIKE_TYPES_H @@ -103,8 +103,8 @@ extern struct pike_string *weak_type_string; #ifdef PIKE_DEBUG #define init_type_stack() type_stack_mark() #define exit_type_stack() do {\ - int q_q_q_q=pop_stack_mark(); \ - if(q_q_q_q) fatal("Type stack out of wack! %d\n",q_q_q_q); \ + ptrdiff_t q_q_q_q = pop_stack_mark(); \ + if(q_q_q_q) fatal("Type stack out of wack! %d\n", q_q_q_q); \ } while(0) #else #define init_type_stack type_stack_mark diff --git a/src/program.c b/src/program.c index adeb3f44406bd11f78d43f1871c6d4373b98583b..67108cdd5a58081b56c1543332b78f75db2ea532 100644 --- a/src/program.c +++ b/src/program.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: program.c,v 1.261 2000/08/15 15:52:55 grubba Exp $"); +RCSID("$Id: program.c,v 1.262 2000/08/16 10:25:52 grubba Exp $"); #include "program.h" #include "object.h" #include "dynamic_buffer.h" @@ -529,7 +529,7 @@ char *find_program_name(struct program *p, INT32 *line) #ifdef DEBUG_MALLOC char *tmp; #endif - INT32 pos; + ptrdiff_t pos; INT32 l; if(!line) line=&l; @@ -545,7 +545,7 @@ char *find_program_name(struct program *p, INT32 *line) { char *tmp=get_line(p->program+pos, p, line); if(tmp && *line) return tmp; - if(pos+1>=(long)p->num_program) break; + if(pos+1 >= (ptrdiff_t)p->num_program) break; } *line=0; return 0; @@ -3075,10 +3075,10 @@ void store_linenumber(INT32 current_line, struct pike_string *current_file) add_to_linenumbers(0); copy_shared_string(Pike_compiler->last_file, current_file); } - insert_small_number(PC-Pike_compiler->last_pc); + insert_small_number(DO_NOT_WARN((INT32)(PC-Pike_compiler->last_pc))); insert_small_number(current_line-Pike_compiler->last_line); Pike_compiler->last_line=current_line; - Pike_compiler->last_pc=PC; + Pike_compiler->last_pc = DO_NOT_WARN((INT32)PC); } } @@ -3113,7 +3113,7 @@ PMOD_EXPORT char *get_line(unsigned char *pc,struct program *prog,INT32 *linep) pid=prog->id; } - if (offset > (INT32)prog->num_program || offset<0) + if ((offset > (ptrdiff_t)prog->num_program) || (offset < 0)) return file; while(cnt < prog->linenumbers + prog->num_linenumbers) @@ -3861,7 +3861,8 @@ void pop_compiler_frame(void) #define GET_STORAGE_CACHE_SIZE 1024 static struct get_storage_cache { - INT32 oid, pid, offset; + INT32 oid, pid; + ptrdiff_t offset; } get_storage_cache[GET_STORAGE_CACHE_SIZE]; ptrdiff_t low_get_storage(struct program *o, struct program *p) @@ -3905,7 +3906,7 @@ ptrdiff_t low_get_storage(struct program *o, struct program *p) PMOD_EXPORT char *get_storage(struct object *o, struct program *p) { - int offset; + ptrdiff_t offset; #ifdef _REENTRANT if(d_flag) CHECK_INTERPRETER_LOCK();