From: Jordan Date: Wed, 11 Jan 2017 23:13:09 +0000 (-0800) Subject: fixes X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=commitdiff_plain;h=b503d817730f737819886d20463be80e5935dfb2 fixes --- diff --git a/src/ir.c b/src/ir.c index 5fbd52e..593bae1 100644 --- a/src/ir.c +++ b/src/ir.c @@ -58,7 +58,7 @@ struct ir_frameinfo_t { int facing, w, h; }; struct ir_framedata_t { struct ir_setdata_header_t header; - struct ir_frameinfo_t frameinfo; + struct ir_frameinfo_t frameinfo; }; struct ir_framebox_t { struct ir_setdata_header_t header; @@ -86,13 +86,13 @@ struct ir_class_t uint8_t* name; }; struct ir_set_t -{ struct ir_set_t* nextchild, * nextsib; - struct ir_class_t* class; - long long ref; - uint8_t* name; - struct framebox_t* frameboxes; - struct simplex_t* audio; - struct link_t* links; +{ struct ir_set_t* nextchild, * nextsib; + struct ir_class_t* class; + long long ref; + uint8_t* name; + struct ir_framebox_t* frameboxes; + struct ir_simplex_t* audio; + struct ir_link_t* links; }; /* Function-Like Macros */ #define do_warn() do { \ @@ -244,7 +244,7 @@ struct ir_framebox_t* ir_set_add_framebox return set->frameboxes = struct_alloc(ir_framebox_t); iter = set->frameboxes; check: - if (bytes_identical(iter->header.name, name)) + if (bytes_identical(iter->header.data_name, name)) return iter; if (iter->header.nextsib != NULL) { iter = iter->header.nextsib; @@ -279,44 +279,45 @@ void ir_set_assign_data struct ir_link_t* link; switch (setdata->header.type) { case FSDAT: - framebox = ir_set_add_framebox(set, setdata->header.name); - if (framebox->framesheets[setdata->framesheet.frameinfo.facing] != NULL) + framebox = ir_set_add_framebox(set, setdata->header.data_name); + if (framebox->framesheets[setdata->framesheet.frameinfo.facing].header.data_name != NULL) wprintf("Duplicate framesheet [%i] %s\n", setdata->framesheet.frameinfo.facing, setdata->header.data_name); framebox->framesheets[setdata->framesheet.frameinfo.facing] = setdata->framesheet; break; case MSDAT: - framebox = ir_set_add_framebox(set, setdata->header.name); - if (framebox->mapsheets[setdata->mapsheet.frameinfo.facing] != NULL) + framebox = ir_set_add_framebox(set, setdata->header.data_name); + if (framebox->mapsheets[setdata->mapsheet.frameinfo.facing].header.data_name != NULL) wprintf("Duplicate mapsheet [%i] %s\n", setdata->mapsheet.frameinfo.facing, setdata->header.data_name); framebox->mapsheets[setdata->mapsheet.frameinfo.facing] = setdata->mapsheet; break; case ADAT: if (set->audio == NULL) - { set->audio = &setdata->audio; + { set->audio = setdata->audio; return; } simplex = set->audio; - while (simplex->header.nextsib != NULL;) + while (simplex->header.nextsib != NULL) if (bytes_identical(simplex->header.data_name, setdata->header.data_name)) { wprintf("Duplicate audio %s\n", setdata->header.data_name); - *simplex = setdata->audio; + *simplex = *setdata->audio; + //setdata->audio is now a pointer to redundant, unused memory. return; } else simplex = simplex->header.nextsib; - simplex->header.nextsib = &setdata->audio; + simplex->header.nextsib = setdata->audio; break; case LDAT: if (set->links == NULL) - { set->links = &setdata->link; + { set->links = setdata->link; return; } link = set->links; while (link->header.nextsib != NULL) link = link->header.nextsib; - link->header.nextsib = &setdata->link; + link->header.nextsib = setdata->link; break; default: fprintf(stderr, "Unknown setdata type %x\n", setdata->header.type); @@ -339,10 +340,10 @@ void ir_data_assign_path ( union ir_setdata_t* setdata, uint8_t* path ) -{ if (set->header.src_filename) +{ if (setdata->header.src_filename) wprintf("Path override: %s -> %s for set %s\n", - set->header.src_filename, path, set->name); - set->header.src_filename = path; + setdata->header.src_filename, path, setdata->name); + setdata->header.src_filename = path; //TODO: internal strdup, not assign (= path;) } @@ -355,7 +356,7 @@ union ir_setdata_t* ir_framesheet int height ) { struct ir_framedata_t* framesheet = struct_alloc(ir_framedata_t); - framesheet->header->type = FSDAT; + framesheet->header.type = FSDAT; framesheet->header.data_name = name; framesheet->frameinfo.facing = d; framesheet->frameinfo.w = width; @@ -367,7 +368,7 @@ union ir_setdata_t* ir_mapsheet ( uint8_t* name, apc_facing d, int width, - int height, + int height ) { struct ir_framedata_t* mapsheet = struct_alloc(ir_framedata_t); mapsheet->header.type = MSDAT; @@ -393,7 +394,7 @@ void* stack_alloc(size_t bytes) return pagenode_head->head; } if (PN_HEADSPACE() < bytes) - { pagenode_head->next = (struct pagenode_t*) calloc(PN_ALLOCSIZE); + { pagenode_head->next = (struct pagenode_t*) calloc(PN_ALLOCSIZE,1); pagenode_head = pagenode_head->next; pagenode_head->head = pagenode_head->root; }