--- a/hald/device_info.c 2007-04-28 19:35:04.000000000 -0500 +++ b/hald/device_info.c 2007-04-28 20:40:47.000000000 -0500 @@ -953,9 +953,14 @@ switch (rule->rtype) { case RULE_MATCH: /* skip non-matching rules block */ - /*HAL_INFO(("%p match '%s' at %s", rule, rule->key, hal_device_get_udi (d)));*/ + HAL_INFO(("%p match '%s' at %s", rule, rule->key, hal_device_get_udi (d))); if (!handle_match (rule, d)) { - /*HAL_INFO(("no match, skip to rule (%llx)", rule->jump_position));*/ + HAL_INFO(("no match, skip to rule (%llx)", rule->jump_position)); + + if (!rule->jump_position) + break; + + HAL_INFO(("Jumping to rule %d", rule->jump_position)); rule = di_jump(rule); if(rule == NULL) @@ -1007,9 +1012,9 @@ /* Checking if we have at least one preprobe rule */ if(header->fdi_rules_information > header->fdi_rules_preprobe) { - /*HAL_INFO(("preprobe rules offset: %ld", header->fdi_rules_preprobe)); + HAL_INFO(("preprobe rules offset: %ld", header->fdi_rules_preprobe)); HAL_INFO(("preprobe rules size: %ld", - header->fdi_rules_information - header->fdi_rules_preprobe));*/ + header->fdi_rules_information - header->fdi_rules_preprobe)); rules_match_and_merge_device (RULES_PTR(header->fdi_rules_preprobe), d); } break; @@ -1018,9 +1023,9 @@ /* Checking if we have at least one information rule */ if(header->fdi_rules_policy > header->fdi_rules_information) { - /*HAL_INFO(("information rules offset: %ld", header->fdi_rules_information)); + HAL_INFO(("information rules offset: %ld", header->fdi_rules_information)); HAL_INFO(("information rules size: %ld", - header->fdi_rules_policy - header->fdi_rules_information));*/ + header->fdi_rules_policy - header->fdi_rules_information)); rules_match_and_merge_device (RULES_PTR(header->fdi_rules_information), d); } break; @@ -1029,9 +1034,9 @@ /* Checking if we have at least one policy rule */ if(header->all_rules_size > header->fdi_rules_policy) { - /*HAL_INFO(("policy rules offset: %ld", header->fdi_rules_policy)); + HAL_INFO(("policy rules offset: %ld", header->fdi_rules_policy)); HAL_INFO(("policy rules size: %ld", - header->all_rules_size - header->fdi_rules_policy));*/ + header->all_rules_size - header->fdi_rules_policy)); rules_match_and_merge_device (RULES_PTR(header->fdi_rules_policy), d); } break;