ROOT and paths with parentheses

While integrating ROOT in an Windows application built with another framework(i.e. using ROOT as library), I came to notice that ROOT seems to fail handling paths which contain parentheses: the application itself as well as the ROOT DLLs got installed in c:\Program Files (x86)\somePath\ and the program would crash when run because the plugin loader couldn’t find ROOT DLLs as it misinterpreted the parentheses in the path(the app worked fine when run from path that didn’t contain parentheses).

The fact that it crashed may have been fixed in recent commits that add nullptr checks and the crash could also be avoided by manually loading the libraries, but did I got it right: is ROOT inherently broken if used from path that contain parentheses or is there some setting with which the problem can be avoided? Initially the problem seemed to arise from path handling done in TSystem::SplitAclicMode, but avoiding that with some hacking only lead to new problems which seemed to lead rather deep into CINT code.


If you look carefully at the Windows paragraph on the binaries download page, you can read:

[quote]Important installation notes:
• Do not untar in a directory with a name containing blank characters.
• …
[/quote]So I suppose that answers your question… :wink:

Cheers, Bertrand.

Not completely: it’s not immediately clear that a limitation of ROOT application installation inevitably propagates to applications that merely use small subset of ROOT DLL’s as library. And why stop here: since this is not optimal behaviour it might be worth asking is this fixable with reasonable amount of work? If not, ROOT generates lots of debugging messages: it might as well clearly warn if it is being used from a invalid path location.