aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/files.c2
-rw-r--r--libcpp/pch.c11
3 files changed, 17 insertions, 2 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 236c068..897d4ac 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2004-06-21 Geoffrey Keating <geoffk@apple.com>
+
+ * files.c (should_stack_file): Correct swapped parameters to call
+ to cb.read_pch.
+ * pch.c (cpp_valid_state): Handle -fpreprocessed.
+
2004-06-15 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in: Regenerate with automake 1.8.5.
diff --git a/libcpp/files.c b/libcpp/files.c
index 6a18d71..0680652 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -625,7 +625,7 @@ should_stack_file (cpp_reader *pfile, _cpp_file *file, bool import)
/* Handle PCH files immediately; don't stack them. */
if (file->pch)
{
- pfile->cb.read_pch (pfile, file->path, file->fd, file->pchname);
+ pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
close (file->fd);
file->fd = -1;
return false;
diff --git a/libcpp/pch.c b/libcpp/pch.c
index a9d139a..a343cd8 100644
--- a/libcpp/pch.c
+++ b/libcpp/pch.c
@@ -438,13 +438,22 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd)
if (m.name_length == 0)
break;
+ /* If this file is already preprocessed, there won't be any
+ macros defined, and that's OK. */
+ if (CPP_OPTION (r, preprocessed))
+ {
+ if (lseek (fd, m.definition_length, SEEK_CUR) == -1)
+ goto error;
+ continue;
+ }
+
if (m.definition_length > namebufsz)
{
free (namebuf);
namebufsz = m.definition_length + 256;
namebuf = xmalloc (namebufsz);
}
-
+
if ((size_t)read (fd, namebuf, m.definition_length)
!= m.definition_length)
goto error;