itry to use size_t
fix overflow handling bugs.
This commit is contained in:
parent
84b0529060
commit
2e6360738c
@ -126,7 +126,7 @@ long long unsigned int tmalloc;
|
|||||||
|
|
||||||
|
|
||||||
static inline char *
|
static inline char *
|
||||||
call_malloc(unsigned long int size)
|
call_malloc(size_t size)
|
||||||
{
|
{
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
char *out;
|
char *out;
|
||||||
@ -152,7 +152,7 @@ call_malloc(unsigned long int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
Yap_AllocCodeSpace(unsigned long int size)
|
Yap_AllocCodeSpace(size_t size)
|
||||||
{
|
{
|
||||||
size = AdjustSize(size);
|
size = AdjustSize(size);
|
||||||
return call_malloc(size);
|
return call_malloc(size);
|
||||||
@ -187,7 +187,7 @@ call_realloc(char *p, unsigned long int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
Yap_ReallocCodeSpace(char *p, unsigned long int size)
|
Yap_ReallocCodeSpace(char *p, size_t size)
|
||||||
{
|
{
|
||||||
size = AdjustSize(size);
|
size = AdjustSize(size);
|
||||||
return call_realloc(p, size);
|
return call_realloc(p, size);
|
||||||
@ -214,7 +214,7 @@ Yap_FreeCodeSpace(char *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
Yap_AllocAtomSpace(unsigned long int size)
|
Yap_AllocAtomSpace(size_t size)
|
||||||
{
|
{
|
||||||
size = AdjustSize(size);
|
size = AdjustSize(size);
|
||||||
return call_malloc(size);
|
return call_malloc(size);
|
||||||
|
14
C/cdmgr.c
14
C/cdmgr.c
@ -809,7 +809,7 @@ Yap_BuildMegaClause(PredEntry *ap)
|
|||||||
UInt sz;
|
UInt sz;
|
||||||
MegaClause *mcl;
|
MegaClause *mcl;
|
||||||
yamop *ptr;
|
yamop *ptr;
|
||||||
UInt required;
|
size_t required;
|
||||||
UInt has_blobs = 0;
|
UInt has_blobs = 0;
|
||||||
|
|
||||||
if (ap->PredFlags & (DynamicPredFlag|LogUpdatePredFlag|MegaClausePredFlag
|
if (ap->PredFlags & (DynamicPredFlag|LogUpdatePredFlag|MegaClausePredFlag
|
||||||
@ -839,6 +839,12 @@ Yap_BuildMegaClause(PredEntry *ap)
|
|||||||
sz -= (UInt)NEXTOP((yamop *)NULL,p) + sizeof(StaticClause);
|
sz -= (UInt)NEXTOP((yamop *)NULL,p) + sizeof(StaticClause);
|
||||||
}
|
}
|
||||||
required = sz*ap->cs.p_code.NOfClauses+sizeof(MegaClause)+(UInt)NEXTOP((yamop *)NULL,l);
|
required = sz*ap->cs.p_code.NOfClauses+sizeof(MegaClause)+(UInt)NEXTOP((yamop *)NULL,l);
|
||||||
|
while (!(mcl = (MegaClause *)Yap_AllocCodeSpace(required))) {
|
||||||
|
if (!Yap_growheap(FALSE, required, NULL)) {
|
||||||
|
/* just fail, the system will keep on going */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
total_megaclause += required;
|
total_megaclause += required;
|
||||||
cl =
|
cl =
|
||||||
@ -846,12 +852,6 @@ Yap_BuildMegaClause(PredEntry *ap)
|
|||||||
total_released += ap->cs.p_code.NOfClauses*cl->ClSize;
|
total_released += ap->cs.p_code.NOfClauses*cl->ClSize;
|
||||||
nof_megaclauses++;
|
nof_megaclauses++;
|
||||||
#endif
|
#endif
|
||||||
while (!(mcl = (MegaClause *)Yap_AllocCodeSpace(required))) {
|
|
||||||
if (!Yap_growheap(FALSE, required, NULL)) {
|
|
||||||
/* just fail, the system will keep on going */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Yap_ClauseSpace += required;
|
Yap_ClauseSpace += required;
|
||||||
/* cool, it's our turn to do the conversion */
|
/* cool, it's our turn to do the conversion */
|
||||||
mcl->ClFlags = MegaMask | has_blobs;
|
mcl->ClFlags = MegaMask | has_blobs;
|
||||||
|
4
C/grow.c
4
C/grow.c
@ -1410,7 +1410,7 @@ growatomtable( USES_REGS1 )
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Yap_growheap(int fix_code, UInt in_size, void *cip)
|
Yap_growheap(int fix_code, size_t in_size, void *cip)
|
||||||
{
|
{
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
int res;
|
int res;
|
||||||
@ -1441,7 +1441,7 @@ Yap_growheap(int fix_code, UInt in_size, void *cip)
|
|||||||
}
|
}
|
||||||
#if USE_SYSTEM_MALLOC
|
#if USE_SYSTEM_MALLOC
|
||||||
P = Yap_Error(OUT_OF_HEAP_ERROR,TermNil,"malloc failed");
|
P = Yap_Error(OUT_OF_HEAP_ERROR,TermNil,"malloc failed");
|
||||||
res = -1;
|
res = FALSE;
|
||||||
#else
|
#else
|
||||||
res=do_growheap(fix_code, in_size, (struct intermediates *)cip, NULL, NULL, NULL PASS_REGS);
|
res=do_growheap(fix_code, in_size, (struct intermediates *)cip, NULL, NULL, NULL PASS_REGS);
|
||||||
#endif
|
#endif
|
||||||
|
@ -83,9 +83,9 @@ void STD_PROTO(Yap_init_agc, (void));
|
|||||||
|
|
||||||
/* alloc.c */
|
/* alloc.c */
|
||||||
void STD_PROTO(Yap_FreeCodeSpace,(char *));
|
void STD_PROTO(Yap_FreeCodeSpace,(char *));
|
||||||
char *STD_PROTO(Yap_AllocAtomSpace,(unsigned long int));
|
char *STD_PROTO(Yap_AllocAtomSpace,(size_t));
|
||||||
char *STD_PROTO(Yap_AllocCodeSpace,(unsigned long int));
|
char *STD_PROTO(Yap_AllocCodeSpace,(size_t));
|
||||||
char *STD_PROTO(Yap_ReallocCodeSpace,(char *,unsigned long int));
|
char *STD_PROTO(Yap_ReallocCodeSpace,(char *,size_t));
|
||||||
ADDR STD_PROTO(Yap_AllocFromForeignArea,(Int));
|
ADDR STD_PROTO(Yap_AllocFromForeignArea,(Int));
|
||||||
int STD_PROTO(Yap_ExtendWorkSpace,(Int));
|
int STD_PROTO(Yap_ExtendWorkSpace,(Int));
|
||||||
void STD_PROTO(Yap_FreeAtomSpace,(char *));
|
void STD_PROTO(Yap_FreeAtomSpace,(char *));
|
||||||
@ -206,7 +206,7 @@ void STD_PROTO(Yap_AllocateDefaultArena, (Int, Int, int));
|
|||||||
Int STD_PROTO(Yap_total_stack_shift_time,(void));
|
Int STD_PROTO(Yap_total_stack_shift_time,(void));
|
||||||
void STD_PROTO(Yap_InitGrowPreds, (void));
|
void STD_PROTO(Yap_InitGrowPreds, (void));
|
||||||
UInt STD_PROTO(Yap_InsertInGlobal, (CELL *, UInt));
|
UInt STD_PROTO(Yap_InsertInGlobal, (CELL *, UInt));
|
||||||
int STD_PROTO(Yap_growheap, (int, UInt, void *));
|
int STD_PROTO(Yap_growheap, (int, size_t, void *));
|
||||||
int STD_PROTO(Yap_growstack, (long));
|
int STD_PROTO(Yap_growstack, (long));
|
||||||
int STD_PROTO(Yap_growtrail, (long, int));
|
int STD_PROTO(Yap_growtrail, (long, int));
|
||||||
int STD_PROTO(Yap_growglobal, (CELL **));
|
int STD_PROTO(Yap_growglobal, (CELL **));
|
||||||
|
@ -66,10 +66,10 @@ typedef struct FREEB {
|
|||||||
|
|
||||||
#if SIZEOF_INT_P==4
|
#if SIZEOF_INT_P==4
|
||||||
#define YAP_ALIGN 3
|
#define YAP_ALIGN 3
|
||||||
#define YAP_ALIGNMASK 0xfffffffc
|
#define YAP_ALIGNMASK ((CELL)(-4))
|
||||||
#else
|
#else
|
||||||
#define YAP_ALIGN 7
|
#define YAP_ALIGN 7
|
||||||
#define YAP_ALIGNMASK 0xfffffff8L
|
#define YAP_ALIGNMASK ((CELL)(-8))
|
||||||
#endif /* ALIGN_LONGS */
|
#endif /* ALIGN_LONGS */
|
||||||
|
|
||||||
#define AdjustSize(X) ((X+YAP_ALIGN) & YAP_ALIGNMASK)
|
#define AdjustSize(X) ((X+YAP_ALIGN) & YAP_ALIGNMASK)
|
||||||
|
Reference in New Issue
Block a user