diff options
Diffstat (limited to 'packages/gcc/gcc-4.3.1/fedora/gcc43-rh251682.patch')
-rw-r--r-- | packages/gcc/gcc-4.3.1/fedora/gcc43-rh251682.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/packages/gcc/gcc-4.3.1/fedora/gcc43-rh251682.patch b/packages/gcc/gcc-4.3.1/fedora/gcc43-rh251682.patch new file mode 100644 index 0000000000..e96ae6f134 --- /dev/null +++ b/packages/gcc/gcc-4.3.1/fedora/gcc43-rh251682.patch @@ -0,0 +1,89 @@ +2008-04-01 Jakub Jelinek <jakub@redhat.com> + + PR pch/13675 + * files.c (struct _cpp_file): Remove pch field. + (pch_open_file): Don't set file->pch, just file->pchname. + (should_stack_file): After pfile->cb.read_pch call + free pchname and clear pchname, don't close file->fd. + Test file->pchname instead of file->pch. Don't close fd after cb. + (_cpp_stack_include): Test file->pchname instead of file->pch. + + * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f). + +--- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100 ++++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200 +@@ -106,9 +106,6 @@ struct _cpp_file + + /* If BUFFER above contains the true contents of the file. */ + bool buffer_valid; +- +- /* File is a PCH (on return from find_include_file). */ +- bool pch; + }; + + /* A singly-linked list for all searches for a given file name, with +@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f + } + closedir (pchdir); + } +- if (valid) +- file->pch = true; +- else ++ if (!valid) + *invalid_pch = true; + } + +@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c + return false; + + /* Handle PCH files immediately; don't stack them. */ +- if (file->pch) ++ if (file->pchname) + { + pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path); +- close (file->fd); + file->fd = -1; ++ free ((void *) file->pchname); ++ file->pchname = NULL; + return false; + } + +@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c + complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we + found a PCH file (in which case linemap_add is not called) or we + were included from the command-line. */ +- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE) ++ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE) + pfile->line_table->highest_location--; + + return _cpp_stack_file (pfile, file, type == IT_IMPORT); +--- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100 ++++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200 +@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co + if (f == NULL) + { + cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen"); ++ close (fd); + return; + } + +@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co + if (fread (&h, sizeof (h), 1, f) != 1) + { + cpp_errno (pfile, CPP_DL_ERROR, "reading"); ++ fclose (f); + return; + } + +@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co + gt_pch_restore (f); + + if (cpp_read_state (pfile, name, f, smd) != 0) +- return; ++ { ++ fclose (f); ++ return; ++ } + + fclose (f); + |