sourcepawn/compiler/pawncc.c
changeset 45 c4d89a7e0bfb
parent 38 e3fb8f7730ac
child 46 c58663b972fe
     1.1 --- a/sourcepawn/compiler/pawncc.c	Tue Aug 01 12:00:49 2006 +0000
     1.2 +++ b/sourcepawn/compiler/pawncc.c	Tue Aug 01 19:49:33 2006 +0000
     1.3 @@ -174,17 +174,19 @@
     1.4  		{
     1.5  			sp_file_publics_t *pbtbl;
     1.6  			AMX_FUNCSTUBNT *stub;
     1.7 +			unsigned char *stubptr;
     1.8  			uint32_t publics = sections[FS_Publics];
     1.9  
    1.10  			pbtbl = (sp_file_publics_t *)malloc(sizeof(sp_file_publics_t) * publics);
    1.11 -			stub = (AMX_FUNCSTUBNT *)((unsigned char *)hdr + hdr->publics);
    1.12 +			stubptr = (unsigned char *)hdr + hdr->publics;
    1.13  
    1.14  			for (i=0; i<publics; i++)
    1.15  			{
    1.16 +				stub = (AMX_FUNCSTUBNT *)stubptr;
    1.17  				pbtbl[i].address = stub->address;
    1.18  				pbtbl[i].name = stub->nameofs - (hdr->nametable + sizeof(uint16_t));
    1.19  
    1.20 -				stub += hdr->defsize;
    1.21 +				stubptr += hdr->defsize;
    1.22  			}
    1.23  			if (publics)
    1.24  			{
    1.25 @@ -199,17 +201,19 @@
    1.26  		{
    1.27  			sp_file_pubvars_t *pbvars;
    1.28  			AMX_FUNCSTUBNT *stub;
    1.29 +			unsigned char *stubptr;
    1.30  			uint32_t pubvars = sections[FS_Pubvars];
    1.31  
    1.32  			pbvars = (sp_file_pubvars_t *)malloc(sizeof(sp_file_pubvars_t) * pubvars);
    1.33 -			stub = (AMX_FUNCSTUBNT *)((unsigned char *)hdr + hdr->pubvars);
    1.34 +			stubptr = (unsigned char *)hdr + hdr->pubvars;
    1.35  
    1.36  			for (i=0; i<pubvars; i++)
    1.37  			{
    1.38 +				stub = (AMX_FUNCSTUBNT *)stubptr;
    1.39  				pbvars[i].address = stub->address;
    1.40  				pbvars[i].name = stub->nameofs - (hdr->nametable + sizeof(uint16_t));
    1.41  
    1.42 -				stub += hdr->defsize;
    1.43 +				stubptr += hdr->defsize;
    1.44  			}
    1.45  			if (pubvars)
    1.46  			{
    1.47 @@ -223,16 +227,18 @@
    1.48  		{
    1.49  			sp_file_natives_t *nvtbl;
    1.50  			AMX_FUNCSTUBNT *stub;
    1.51 +			unsigned char *stubptr;
    1.52  			uint32_t natives = (hdr->libraries - hdr->natives) / hdr->defsize;
    1.53  
    1.54  			nvtbl = (sp_file_natives_t *)malloc(sizeof(sp_file_natives_t) * natives);
    1.55 -			stub = (AMX_FUNCSTUBNT *)((unsigned char *)hdr + hdr->natives);
    1.56 +			stubptr = (unsigned char *)hdr + hdr->natives;
    1.57  
    1.58  			for (i=0; i<natives; i++)
    1.59  			{
    1.60 +				stub = (AMX_FUNCSTUBNT *)stubptr;
    1.61  				nvtbl[i].name = stub->nameofs - (hdr->nametable + sizeof(uint16_t));
    1.62  
    1.63 -				stub += hdr->defsize;
    1.64 +				stubptr += hdr->defsize;
    1.65  			}
    1.66  			if (natives)
    1.67  			{