relative_path() seems overly complicated and buggy

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: relative_path() seems overly complicated and buggy
Date: 2004-11-06 20:26:46
Message-ID: 11365.1099772806@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

There's at least one bug in path.c's relative_path(): it will think
"/foo/a/b" is equal to "/foo/ab" because it skips directory separators
independently in the two strings. The code is sufficiently complex that
I have little faith in it not having any other bugs, either.

I believe that it's unnecessary for relative_path to be so tense
about trying to implement platform-weirdness-aware comparison of paths.
It is not called on arbitrary paths, but only on the compiled-in
paths that were generated by configure. Therefore it is reasonable
to assume that the common prefix we are trying to identify is spelled
exactly the same in both paths.

What I'd like to do is simplify it to just check for exact equality
up through the last directory separator in bin_path. Any objections?

regards, tom lane

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2004-11-06 20:29:17 Re: cygwin build failure
Previous Message Sean Chittenden 2004-11-06 19:52:03 Re: Increasing the length of pg_stat_activity.current_query...