From: Benjamin R. <Ben...@ep...> - 2004-11-11 18:08:25
|
Hi Robb, Benjamin Riefenstahl wrote: >> I'd like to note that one of the hazards of chdir() is that you >> need to do such filename manipulations. If you just use the file >> names like "abc/def" as-is, you don't get into such problems in the >> first place. "Robb Bean" writes: > ? I only know the path of a file (as command line argument) and > extract the current directories name out of it. Yes. And my implied question was "Why do you need to do that?" Or rather, "I doubt there is any pressing need to do that, in my own programs I just use the file names that I get as-is in 99.9999 % of the cases." The only common reason to fiddle with file names is when you are dealing with directories as parameters and you are recursing into them to treat them as a whole, so you need to splice together the individual file names. The only reasons to use chdir() (off the top of my head) are if you are a user shell or a network service. None of these situations seem to apply here. >> > My program produces under Windows XP (without SP2) obviously no >> > exception, but "This application has requested the runtime to >> > terminate it in an unusual way. Please contact ..." ... >> >> So you have a bad pointer. [...] > > I will check this, and it is really possible that there is somewhere > a bad pointer No. It's a *fact* that there is a bad pointer. That is what the error message is saying, just with more details. The question that is left is, which code in particular is responsible for it. > But how could this old C code affect my new C++ (Pathname class) > code, because the C kernel is invoked after the C++ work (working > with the path, ...) is done? What you describe is indeed unlikely. But until you have reproduced the error in a simple test case, we won't know what actually happens. Alternatively you could reproduce the error when running in a debugger and get a stack trace. benny |