If a script parses a macro using gROOT->Macro, that defines some variables, these are accessible in that scope, but go out of scope in the context of a loop etc.
The attached test.C uses gROOT->Macro to read setcolours.C, which defines two const char strings "setgreen" and "setblack". However, they generate the error:
error: use of undeclared identifier 'setgreen'
etc. with root-6.08/0X. This is a regression from root-6.06/06, which worked correctly. Note that removing the curly brackets around the cout line brings setgreen and setblack back into scope, but this is not a solution, because it also fails in loops.
git bisect indicates that the first bad commit could be any of:
8b441aa6866d9f8005834462db385461e5fc46cb - could not be tested as it segfaults
f4bb8668fe0ea11846c4bf96f8df6039a3d4a3b6 - could not be tested as it segfaults
My guess is that it is the first one (DynLookup: annotate the wrapper instead of visiting it.). That version fails the test with a segfault. I think the second commit has nothing to do with it and the third one just fixes the segfault, but not the regression.