Version: 3.4.7-pre3
If you have a look at parse_menu() function (openbox/config.c:787) and parse_find_node() (parse/parse.c:270) you'll realize that both functions loop through list of nodes (xmlNodePtr). That means all "if"s will be evaluated more than once and parse_int() and parse_bool() will be called more times than necessary.
Attached patch moves "if"s out of the loop.
Created attachment 1720[details]
Corrected version of previous patch
Previous patch introduced a bug into loop: the loop would find one node more than once.
Created attachment 1718 [details] Moves "if"s out of the loop (in parse_menu())
Created attachment 1719 [details] Move "if"s out of the loop and rewrite the loop to use parse_find_node() to search for "file"
Created attachment 1720 [details] Corrected version of previous patch Previous patch introduced a bug into loop: the loop would find one node more than once.