sourcepawn/vm/sp_reader.c
changeset 49 6e490d2f1df5
parent 47 50d5e52ded7e
child 53 805202a58dba
     1.1 --- a/sourcepawn/vm/sp_reader.c	Wed Aug 02 17:30:12 2006 +0000
     1.2 +++ b/sourcepawn/vm/sp_reader.c	Wed Aug 02 20:00:44 2006 +0000
     1.3 @@ -7,19 +7,11 @@
     1.4  {
     1.5  	char *nameptr;
     1.6  	uint8_t sectnum = 0;
     1.7 -
     1.8 -	sp_plugin_infotab_t *info = (sp_plugin_infotab_t *)malloc(sizeof(sp_plugin_infotab_t));
     1.9 -	sp_plugin_debug_t *dbg = (sp_plugin_debug_t *)malloc(sizeof(sp_plugin_debug_t));
    1.10 -
    1.11  	sp_file_section_t *secptr = (sp_file_section_t *)(base + sizeof(sp_file_hdr_t));
    1.12  
    1.13  	memset(plugin, 0, sizeof(sp_plugin_t));
    1.14 -	memset(info, 0, sizeof(sp_plugin_infotab_t));
    1.15 -	memset(dbg, 0, sizeof(sp_plugin_debug_t));
    1.16  
    1.17  	plugin->base = base;
    1.18 -	plugin->info = info;
    1.19 -	plugin->debug = dbg;
    1.20  
    1.21  	while (sectnum < hdr->sections)
    1.22  	{
    1.23 @@ -39,57 +31,57 @@
    1.24  			plugin->data_size = dat->datasize;
    1.25  			plugin->memory = dat->memsize;
    1.26  		}
    1.27 -		else if (!(plugin->info->publics) && !strcmp(nameptr, ".publics"))
    1.28 +		else if (!(plugin->info.publics) && !strcmp(nameptr, ".publics"))
    1.29  		{
    1.30 -			plugin->info->publics_num = secptr->size / sizeof(sp_file_publics_t);
    1.31 -			plugin->info->publics = (sp_file_publics_t *)(base + secptr->dataoffs);
    1.32 +			plugin->info.publics_num = secptr->size / sizeof(sp_file_publics_t);
    1.33 +			plugin->info.publics = (sp_file_publics_t *)(base + secptr->dataoffs);
    1.34  		}
    1.35 -		else if (!(plugin->info->pubvars) && !strcmp(nameptr, ".pubvars"))
    1.36 +		else if (!(plugin->info.pubvars) && !strcmp(nameptr, ".pubvars"))
    1.37  		{
    1.38 -			plugin->info->pubvars_num = secptr->size / sizeof(sp_file_pubvars_t);
    1.39 -			plugin->info->pubvars = (sp_file_pubvars_t *)(base + secptr->dataoffs);
    1.40 +			plugin->info.pubvars_num = secptr->size / sizeof(sp_file_pubvars_t);
    1.41 +			plugin->info.pubvars = (sp_file_pubvars_t *)(base + secptr->dataoffs);
    1.42  		}
    1.43 -		else if (!(plugin->info->natives) && !strcmp(nameptr, ".natives"))
    1.44 +		else if (!(plugin->info.natives) && !strcmp(nameptr, ".natives"))
    1.45  		{
    1.46 -			plugin->info->natives_num = secptr->size / sizeof(sp_file_natives_t);
    1.47 -			plugin->info->natives = (sp_file_natives_t *)(base + secptr->dataoffs);
    1.48 +			plugin->info.natives_num = secptr->size / sizeof(sp_file_natives_t);
    1.49 +			plugin->info.natives = (sp_file_natives_t *)(base + secptr->dataoffs);
    1.50  		}
    1.51 -		else if (!(plugin->info->stringbase) && !strcmp(nameptr, ".names"))
    1.52 +		else if (!(plugin->info.stringbase) && !strcmp(nameptr, ".names"))
    1.53  		{
    1.54 -			plugin->info->stringbase = base + secptr->dataoffs;
    1.55 +			plugin->info.stringbase = base + secptr->dataoffs;
    1.56  		}
    1.57 -		else if (!(plugin->debug->files) && !strcmp(nameptr, ".dbg.files"))
    1.58 +		else if (!(plugin->debug.files) && !strcmp(nameptr, ".dbg.files"))
    1.59  		{
    1.60 -			plugin->debug->files = (sp_fdbg_file_t *)(base + secptr->dataoffs);
    1.61 +			plugin->debug.files = (sp_fdbg_file_t *)(base + secptr->dataoffs);
    1.62  		}
    1.63 -		else if (!(plugin->debug->lines) && !strcmp(nameptr, ".dbg.lines"))
    1.64 +		else if (!(plugin->debug.lines) && !strcmp(nameptr, ".dbg.lines"))
    1.65  		{
    1.66 -			plugin->debug->lines = (sp_fdbg_line_t *)(base + secptr->dataoffs);
    1.67 +			plugin->debug.lines = (sp_fdbg_line_t *)(base + secptr->dataoffs);
    1.68  		}
    1.69 -		else if (!(plugin->debug->symbols) && !strcmp(nameptr, ".dbg.symbols"))
    1.70 +		else if (!(plugin->debug.symbols) && !strcmp(nameptr, ".dbg.symbols"))
    1.71  		{
    1.72 -			plugin->debug->symbols = (sp_fdbg_symbol_t *)(base + secptr->dataoffs);
    1.73 +			plugin->debug.symbols = (sp_fdbg_symbol_t *)(base + secptr->dataoffs);
    1.74  		}
    1.75 -		else if (!(plugin->debug->lines_num) && !strcmp(nameptr, ".dbg.info"))
    1.76 +		else if (!(plugin->debug.lines_num) && !strcmp(nameptr, ".dbg.info"))
    1.77  		{
    1.78  			sp_fdbg_info_t *inf = (sp_fdbg_info_t *)(base + secptr->dataoffs);
    1.79 -			plugin->debug->files_num = inf->num_files;
    1.80 -			plugin->debug->lines_num = inf->num_lines;
    1.81 -			plugin->debug->syms_num = inf->num_syms;
    1.82 +			plugin->debug.files_num = inf->num_files;
    1.83 +			plugin->debug.lines_num = inf->num_lines;
    1.84 +			plugin->debug.syms_num = inf->num_syms;
    1.85  		}
    1.86 -		else if (!(plugin->debug->stringbase) && !strcmp(nameptr, ".dbg.strings"))
    1.87 +		else if (!(plugin->debug.stringbase) && !strcmp(nameptr, ".dbg.strings"))
    1.88  		{
    1.89 -			plugin->debug->stringbase = base + secptr->dataoffs;
    1.90 +			plugin->debug.stringbase = base + secptr->dataoffs;
    1.91  		}
    1.92  
    1.93  		secptr++;
    1.94  		sectnum++;
    1.95  	}
    1.96  
    1.97 -	if (!(plugin->pcode) || !(plugin->data) || !(plugin->info->stringbase))
    1.98 +	if (!(plugin->pcode) || !(plugin->data) || !(plugin->info.stringbase))
    1.99  		goto return_error;
   1.100  
   1.101 -	if ((plugin->flags == SP_FILE_DEBUG) && (!(plugin->debug->files) || !(plugin->debug->lines) || !(plugin->debug->symbols)))
   1.102 +	if ((plugin->flags == SP_FILE_DEBUG) && (!(plugin->debug.files) || !(plugin->debug.lines) || !(plugin->debug.symbols)))
   1.103  		goto return_error;
   1.104  
   1.105  	if (err)
   1.106 @@ -98,9 +90,6 @@
   1.107  	return plugin;
   1.108  
   1.109  return_error:
   1.110 -	free(dbg);
   1.111 -	free(info);
   1.112 -
   1.113  	if (err)
   1.114  		*err = SP_ERR_FILE_FORMAT;
   1.115