Convenience.hpp extension core drops on ~ (tilda)
I ran across a problem in the convenience extension function. If the filename happens to have the the tilda character in it the function core drops. I discovered the problem when a file named ~trash was inadvertently created in a data directory. After creation of that file the system started core dropping. After much debugging I narrowed the problem to the extension function and the ~trash file. I was able to replicate the problem by std::string filename = "~test.txt"; string ext = extension(filename); Does anyone know a work around or if there are any other gotcha characters in this function. Bob
# bobj_27@yahoo.com / 2006-08-18 09:21:43 -0700:
I ran across a problem in the convenience extension function. If the filename happens to have the the tilda character in it the function core drops. I discovered the problem when a file named ~trash was inadvertently created in a data directory. After creation of that file the system started core dropping. After much debugging I narrowed the problem to the extension function and the ~trash file.
I was able to replicate the problem by
std::string filename = "~test.txt"; string ext = extension(filename);
Does anyone know a work around or if there are any other gotcha characters in this function.
From http://www.boost.org/libs/filesystem/doc/path.htm#synopsis : Class path member, or non-member operator/, functions may throw a : filesystem_error exception if the path is not in the syntax : specified for the grammar. : Note: There is no guarantee that a path object represents a path : which is considered valid by the current operating system. A path : might be invalid to the operating system because it contains invalid : names (too long, invalid characters, and so on), or because it is a : partial path still as yet unfinished by the program. An invalid path : will normally be detected at time of use, such as by one of the : Filesystem Library's operations or fstream functions. : Portability Warning: There is no guarantee that a path object : represents a path which would be portable to another operating : system. A path might be non-portable because it contains names which : the operating systems considers too long or contains invalid : characters. A default name_check mechanism is provided to aid in the : detection of non-portable names, or a name_check function can be : specified in path constructors. The library supplies several : name_check functions, or users can supply their own. -- How many Vietnam vets does it take to screw in a light bulb? You don't know, man. You don't KNOW. Cause you weren't THERE. http://bash.org/?255991
participants (2)
-
Bob J
-
Roman Neuhauser