summaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog7
-rw-r--r--libcpp/files.c5
-rw-r--r--libcpp/internal.h1
3 files changed, 12 insertions, 1 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 2cdd78445b8..48fdf38691b 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,10 @@
+2004-07-16 Andris Pavenis <pavenis@latnet.lv>
+
+ PR preprocessor/16366
+ * internal.h (struct cpp_reader): New field dir_hash.
+ * files.c (make_cpp_dir): Use dir_hash, not file_hash.
+ (_cpp_init_files, _cpp_cleanup_files): Update for new field.
+
2004-07-04 Neil Booth <neil@duron.akihabara.co.uk>
PR preprocessor/16192
diff --git a/libcpp/files.c b/libcpp/files.c
index cd8d077ef71..fc1fa2c7f0e 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -884,7 +884,7 @@ make_cpp_dir (cpp_reader *pfile, const char *dir_name, int sysp)
cpp_dir *dir;
hash_slot = (struct file_hash_entry **)
- htab_find_slot_with_hash (pfile->file_hash, dir_name,
+ htab_find_slot_with_hash (pfile->dir_hash, dir_name,
htab_hash_string (dir_name),
INSERT);
@@ -984,6 +984,8 @@ _cpp_init_files (cpp_reader *pfile)
{
pfile->file_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq,
NULL, xcalloc, free);
+ pfile->dir_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq,
+ NULL, xcalloc, free);
allocate_file_hash_entries (pfile);
}
@@ -992,6 +994,7 @@ void
_cpp_cleanup_files (cpp_reader *pfile)
{
htab_delete (pfile->file_hash);
+ htab_delete (pfile->dir_hash);
}
/* Enter a file name in the hash for the sake of cpp_included. */
diff --git a/libcpp/internal.h b/libcpp/internal.h
index 845f1ebdf08..0a7eb109187 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -334,6 +334,7 @@ struct cpp_reader
/* File and directory hash table. */
struct htab *file_hash;
+ struct htab *dir_hash;
struct file_hash_entry *file_hash_entries;
unsigned int file_hash_entries_allocated, file_hash_entries_used;