diff --git a/hunspell.rhbz759647.patch b/hunspell.rhbz759647.patch new file mode 100644 index 0000000..31f48ce --- /dev/null +++ b/hunspell.rhbz759647.patch @@ -0,0 +1,74 @@ +Index: src/tools/hunspell.cxx +=================================================================== +RCS file: /cvsroot/hunspell/hunspell/src/tools/hunspell.cxx,v +retrieving revision 1.28 +diff -u -r1.28 hunspell.cxx +--- src/tools/hunspell.cxx 21 Jan 2011 17:30:41 -0000 1.28 ++++ src/tools/hunspell.cxx 6 Dec 2011 22:44:15 -0000 +@@ -128,8 +128,6 @@ + #define readline scanline + #endif + +-#define TEMPNAME "hunSPELL.bak" +- + extern char * mystrdup(const char * s); + + // file formats: +@@ -1316,14 +1314,12 @@ + char * extension = basename(filename, '.'); + parser = get_parser(format, extension, pMS[0]); + +- char * tempname = (char *) malloc(strlen(filename) + strlen(TEMPNAME) + 1); +- strcpy(tempname, filename); +- strcpy(basename(tempname, DIRSEPCH), TEMPNAME); +- +- FILE *tempfile; ++ ++ FILE *tempfile = tmpfile(); + +- if (!(tempfile = fopen(tempname, "w"))) { +- fprintf(stderr, gettext("Can't create tempfile %s.\n"), tempname); ++ if (!tempfile) ++ { ++ perror(gettext("Can't create tempfile")); + endwin(); + exit(1); + } +@@ -1337,7 +1333,7 @@ + case -1: { + clear(); + refresh(); +- unlink(tempname); ++ fclose(tempfile); //automatically deleted when closed + endwin(); + exit(0); + } +@@ -1350,15 +1346,22 @@ + } + } + fclose(text); +- fclose(tempfile); + delete parser; + +- if (! modified) { +- unlink(tempname); +- } else { +- rename(tempname, filename); ++ if (modified) { ++ rewind(tempfile); ++ text = fopen(filename, "wb"); ++ ++ size_t n; ++ while ((n = fread(buf, 1, MAXLNLEN, tempfile)) > 0) ++ { ++ if (fwrite(buf, 1, n, text) != n) ++ perror("write failed"); ++ } ++ ++ fclose(text); + } +- free(tempname); ++ fclose(tempfile); //automatically deleted when closed + } + + #endif diff --git a/hunspell.spec b/hunspell.spec index b16a49a..bc1d305 100644 --- a/hunspell.spec +++ b/hunspell.spec @@ -3,7 +3,7 @@ Name: hunspell Summary: A spell checker and morphological analyzer library Version: 1.3.2 -Release: 1%{?dist} +Release: 2%{?dist} Source: http://downloads.sourceforge.net/%{name}/hunspell-%{version}.tar.gz Group: System Environment/Libraries URL: http://hunspell.sourceforge.net/ @@ -16,6 +16,7 @@ BuildRequires: valgrind %if %{double_profiling_build} BuildRequires: words %endif +Patch0: hunspell.rhbz759647.patch %description Hunspell is a spell checker and morphological analyzer library and program @@ -33,6 +34,7 @@ Includes and definitions for developing with hunspell %prep %setup -q +%patch0 -p0 -b .rhbz759647 %build configureflags="--disable-rpath --disable-static --with-ui --with-readline" @@ -121,6 +123,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/hunspell.3.gz %changelog +* Tue Dec 06 2011 Caolán McNamara - 1.3.2-2 +- Resolves: rhbz#759647 temp file name collision + * Tue May 24 2011 Caolán McNamara - 1.3.2-1 - Resolves: rhbz#706686 latest version