mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-27 14:12:36 +00:00
Fix some bugs and a memleak in the testsuite.
This commit is contained in:
parent
063c50fce4
commit
bbffdde2dc
3 changed files with 10 additions and 5 deletions
6
ast.c
6
ast.c
|
@ -2883,9 +2883,13 @@ bool ast_loop_codegen(ast_loop *self, ast_function *func, bool lvalue, ir_value
|
||||||
/* Now all blocks are in place */
|
/* Now all blocks are in place */
|
||||||
/* From 'bin' we jump to whatever comes first */
|
/* From 'bin' we jump to whatever comes first */
|
||||||
if (bprecond) tmpblock = bprecond;
|
if (bprecond) tmpblock = bprecond;
|
||||||
else if (bbody) tmpblock = bbody;
|
else tmpblock = bbody; /* can never be null */
|
||||||
|
|
||||||
|
/* DEAD CODE
|
||||||
else if (bpostcond) tmpblock = bpostcond;
|
else if (bpostcond) tmpblock = bpostcond;
|
||||||
else tmpblock = bout;
|
else tmpblock = bout;
|
||||||
|
*/
|
||||||
|
|
||||||
if (!ir_block_create_jump(bin, ast_ctx(self), tmpblock))
|
if (!ir_block_create_jump(bin, ast_ctx(self), tmpblock))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
5
ir.c
5
ir.c
|
@ -2584,7 +2584,8 @@ bool ir_function_calculate_liferanges(ir_function *self)
|
||||||
|
|
||||||
/* parameters live at 0 */
|
/* parameters live at 0 */
|
||||||
for (i = 0; i < vec_size(self->params); ++i)
|
for (i = 0; i < vec_size(self->params); ++i)
|
||||||
ir_value_life_merge(self->locals[i], 0);
|
if (!ir_value_life_merge(self->locals[i], 0))
|
||||||
|
compile_error(self->context, "internal error: failed value-life merging");
|
||||||
|
|
||||||
do {
|
do {
|
||||||
self->run_id++;
|
self->run_id++;
|
||||||
|
@ -3875,7 +3876,7 @@ void ir_block_dump(ir_block* b, char *ind,
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
oprintf("%s:%s\n", ind, b->label);
|
oprintf("%s:%s\n", ind, b->label);
|
||||||
strncat(ind, "\t", IND_BUFSZ);
|
strncat(ind, "\t", IND_BUFSZ-1);
|
||||||
|
|
||||||
if (b->instr && b->instr[0])
|
if (b->instr && b->instr[0])
|
||||||
oprintf("%s (%i) [entry]\n", ind, (int)(b->instr[0]->eid-1));
|
oprintf("%s (%i) [entry]\n", ind, (int)(b->instr[0]->eid-1));
|
||||||
|
|
2
test.c
2
test.c
|
@ -110,7 +110,6 @@ static FILE ** task_popen(const char *command, const char *mode) {
|
||||||
data->handles[2] = fdopen(errhandle[0], mode);
|
data->handles[2] = fdopen(errhandle[0], mode);
|
||||||
|
|
||||||
/* sigh */
|
/* sigh */
|
||||||
if (argv)
|
|
||||||
vec_free(argv);
|
vec_free(argv);
|
||||||
return data->handles;
|
return data->handles;
|
||||||
} else if (data->pid == 0) {
|
} else if (data->pid == 0) {
|
||||||
|
@ -639,6 +638,7 @@ static void task_template_destroy(task_template_t **tmpl) {
|
||||||
* Nullify all the template members otherwise NULL comparision
|
* Nullify all the template members otherwise NULL comparision
|
||||||
* checks will fail if tmpl pointer is reused.
|
* checks will fail if tmpl pointer is reused.
|
||||||
*/
|
*/
|
||||||
|
mem_d((*tmpl)->tempfilename);
|
||||||
mem_d(*tmpl);
|
mem_d(*tmpl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue