This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: [PATCH] Check for existence of the path before processing '..'
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Tue, 11 Jun 2013 17:09:36 +0200
- Subject: Re: [PATCH] Check for existence of the path before processing '..'
- References: <001401ce66a4$bb9029a0$32b07ce0$%fedin at samsung dot com> <20130611142002 dot GA1927 at ednor dot casa dot cgf dot cx> <20130611150446 dot GB9484 at calimero dot vinschen dot de>
- Reply-to: cygwin at cygwin dot com
On Jun 11 17:04, Corinna Vinschen wrote:
> On Jun 11 10:20, Christopher Faylor wrote:
> > On Tue, Jun 11, 2013 at 05:08:13PM +0400, Fedin Pavel wrote:
> > > Hello!
> > >
> > > Some time ago i reported ability to access things like
> > >"/usr/nonexistent/..bin". I still had this problem and i tried my hands on
> > >fixing it.
> > > The patch works by checking the actual existence of the path before
> > >removing the last component from it. For performance reasons, only one check
> > [...]
> > Also you are calling path_conv recursively. I assume that is where you
> > are seeing a performance hit.
>
> I don't see how do this without calling path_conv, though. You have to
> perform the full conversion on the parent path, with symlinks and
> everything to get the right result.
>
> However, I'm rather impressed by the low impact of this change. I moved
> the check_parent setting so it's only set when a slash occurs, and then
> I made a couple of runs building coreutils. As you know, GCC uses ..
> paths a lot. The performance hit is almost unnoticable: 72.3 seconds
> without, 73.4 seconds with the patch.
Ouch, I computed 2 minutes as 60 seconds here :-P
Correctly computed it's even more impressive: 132.3 secs without, 133.4
secs with the patch. These are average numbers over 5 runs each.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple