* dwarf2out.c (file_info_cmp): Always return consistent results.
From-SVN: r46480
This commit is contained in:
parent
e23381dfb4
commit
356b069880
|
@ -1,3 +1,7 @@
|
|||
Wed Oct 24 18:43:42 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* dwarf2out.c (file_info_cmp): Always return consistent results.
|
||||
|
||||
2001-10-24 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* stmt.c (expand_end_case): Index jumptables from zero for
|
||||
|
|
|
@ -6573,6 +6573,7 @@ struct dir_info
|
|||
|
||||
/* Callback function for file_info comparison. We sort by looking at
|
||||
the directories in the path. */
|
||||
|
||||
static int
|
||||
file_info_cmp (p1, p2)
|
||||
const void *p1;
|
||||
|
@ -6583,11 +6584,13 @@ file_info_cmp (p1, p2)
|
|||
unsigned char *cp1;
|
||||
unsigned char *cp2;
|
||||
|
||||
/* Take care of file names without directories. */
|
||||
if (s1->path == s1->fname)
|
||||
return -1;
|
||||
else if (s2->path == s2->fname)
|
||||
return 1;
|
||||
/* Take care of file names without directories. We need to make sure that
|
||||
we return consistent values to qsort since some will get confused if
|
||||
we return the same value when identical operands are passed in opposite
|
||||
orders. So if neither has a directory, return 0 and otherwise return
|
||||
1 or -1 depending on which one has the directory. */
|
||||
if ((s1->path == s1->fname || s2->path == s2->fname))
|
||||
return (s2->path == s2->fname) - (s1->path == s1->fname);
|
||||
|
||||
cp1 = (unsigned char *) s1->path;
|
||||
cp2 = (unsigned char *) s2->path;
|
||||
|
@ -6596,17 +6599,14 @@ file_info_cmp (p1, p2)
|
|||
{
|
||||
++cp1;
|
||||
++cp2;
|
||||
/* Reached the end of the first path? */
|
||||
if (cp1 == (unsigned char *) s1->fname)
|
||||
/* It doesn't really matter in which order files from the
|
||||
same directory are sorted in. Therefore don't test for
|
||||
the second path reaching the end. */
|
||||
return -1;
|
||||
else if (cp2 == (unsigned char *) s2->fname)
|
||||
return 1;
|
||||
/* Reached the end of the first path? If so, handle like above. */
|
||||
if ((cp1 == (unsigned char *) s1->fname)
|
||||
|| (cp2 == (unsigned char *) s2->fname))
|
||||
return ((cp2 == (unsigned char *) s2->fname)
|
||||
- (cp1 == (unsigned char *) s1->fname));
|
||||
|
||||
/* Character of current path component the same? */
|
||||
if (*cp1 != *cp2)
|
||||
else if (*cp1 != *cp2)
|
||||
return *cp1 - *cp2;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue