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