* path.h (class path_conv): Convert path from char array to char *.
Initialize to NULL in constructors. Drop normalized_path_size member. (path_conv::size): Remove. (path_conv::operator =): Always copy with sizeof path_conv. Always duplicate path on cygheap. (path_conv::set_path): Move implementation to spawn.cc. * path.cc (path_conv::set_normalized_path): Always allocate normalized_path on cygheap. (path_conv::check): Don't work on path, rather allocate THIS_path in TLS and use it throughout. When finished, allocate path on cygheap and copy over. Defer tacking on extension after having copied path. * spawn.cc (path_conv::set_path): Implement here.
This commit is contained in:
@ -87,6 +87,14 @@ perhaps_suffix (const char *prog, path_conv& buf, int& err, unsigned opt)
|
||||
return ext;
|
||||
}
|
||||
|
||||
inline void
|
||||
path_conv::set_path (const char *p)
|
||||
{
|
||||
if (path)
|
||||
cfree (path);
|
||||
path = cstrdup (p);
|
||||
}
|
||||
|
||||
/* Find an executable name, possibly by appending known executable
|
||||
suffixes to it. The win32-translated name is placed in 'buf'.
|
||||
Any found suffix is returned in known_suffix.
|
||||
|
Reference in New Issue
Block a user