Try to fix some bugs in the config parser

personal/stbuehler/wip
Stefan Bühler 13 years ago
parent 2885c88ae7
commit 8b17198eb6

@ -1031,7 +1031,7 @@
/* loop over all actions until we find the last without target_else */
while (TRUE) {
for (cond_and = cond; (uintptr_t)cond->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
for (cond_and = cond; (uintptr_t)cond_and->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
cond_and->data.condition.target = (liAction*)((uintptr_t)cond_and->data.condition.target & (~0x1));
cond_and->data.condition.target->data.condition.target_else = target;
}
@ -1064,7 +1064,7 @@
/* loop over all actions until we find the last without target_else */
while (TRUE) {
for (cond_and = cond; (uintptr_t)cond->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
for (cond_and = cond; (uintptr_t)cond_and->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
cond_and->data.condition.target = (liAction*)((uintptr_t)cond_and->data.condition.target & (~0x1));
cond_and->data.condition.target->data.condition.target_else = target;
@ -1089,11 +1089,11 @@
_printf("got condition_chain in line %zd\n", ctx->line);
/* loop over all actions looking for 'and' markers and clear them */
while (cond) {
while (cond && cond->type == ACTION_TCONDITION) {
_printf("condition: %p if: %p else: %p\n", (void*)cond, (void*)cond->data.condition.target, (void*)cond->data.condition.target_else);
for (cond_and = cond; (uintptr_t)cond->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
for (cond_and = cond; cond_and && (cond_and->type == ACTION_TCONDITION) && (uintptr_t)cond_and->data.condition.target & 0x1; cond_and = cond_and->data.condition.target) {
cond_and->data.condition.target = (liAction*)((uintptr_t)cond_and->data.condition.target & (~0x1));
_printf("condition: if: %p else: %p\n", (void*)cond->data.condition.target, (void*)cond->data.condition.target_else);
_printf("condition_and: %p if: %p else: %p\n", (void*)cond_and, (void*)cond_and->data.condition.target, (void*)cond_and->data.condition.target_else);
}
if (cond->data.condition.target_else)

Loading…
Cancel
Save