]> git.wh0rd.org Git - nano.git/commitdiff
remove the workaround for glibc 2.2.3's broken regexec(), and replace it
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 5 Jun 2006 15:41:23 +0000 (15:41 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 5 Jun 2006 15:41:23 +0000 (15:41 +0000)
with a FAQ entry explaining the problem, since it could break anything
using extended regular expressions, and glibc 2.2.3 is old

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3624 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
configure.ac
doc/faq.html
src/nano.h
src/proto.h
src/utils.c

index 840219143bf0c1759f2a595c4c9c434f0e66e3c0..148c58848e9b569deb43edd6c196b244e599162d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -138,6 +138,11 @@ CVS code -
        - Replace usage of the bool curses_ended with the isendwin()
          function, and remove curses_ended.  Changes to do_suspend().
          (DLR)
+       - Remove the workaround for glibc 2.2.3's broken regexec(), and
+         replace it with a FAQ entry explaining the problem, since it
+         could break anything using extended regular expressions, and
+         glibc 2.2.3 is old.  Changes to configure.ac, faq.html,
+         nano.h, and proto.h; removal of safe_regexec(). (DLR)
 - browser.c:
   do_browser()
        - Reference NANO_GOTODIR_(ALT|F)?KEY instead of
index d2799a43dd35e155740a9e264cdc90b5368636ee..ce21a5b3084362631a89cdd4b25b87a9209ec28d 100644 (file)
@@ -50,25 +50,6 @@ dnl Checks for header files.
 
 AC_HEADER_STDC
 AC_CHECK_HEADERS(fcntl.h getopt.h libintl.h limits.h regex.h termios.h wchar.h wctype.h)
-AC_CHECK_HEADER(regex.h,
-    AC_MSG_CHECKING([for broken regexec from glibc 2.2.3])
-    AC_TRY_RUN([
-#include <sys/types.h>
-#include <regex.h>
-int main(void)
-{
-    regex_t reg;
-    size_t n = 1;
-    regmatch_t r;
-    regcomp(&reg, "\\<", 0);
-    regexec(&reg, "", n, &r, 0);
-    regfree(&reg);
-    return 0;
-}],
-       AC_MSG_RESULT(no),
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(BROKEN_REGEXEC, 1, [Define this if your regexec() function segfaults when passed an empty string under certain conditions, as the one from glibc 2.2.3 does.]),
-       AC_MSG_RESULT([cross-compiling; assuming no])))
 
 dnl Checks for options.
 
index 4313182038c607c661160dd481df31921c6b9a20..5c41764dd208d85b55b3bddf6429b23a3d99347a 100644 (file)
   <a href="#4.5">4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
   <a href="#4.6">4.6. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
   <a href="#4.7">4.7. Nano crashes when I resize my window. How can I fix that?</a><br>
-  <a href="#4.8">4.8. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
-  <a href="#4.9a">4.9a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
-  <a href="#4.9b">4.9b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
-  <a href="#4.10">4.10. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
-  <a href="#4.11">4.11. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
-  <a href="#4.12">4.12. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
+  <a href="#4.8">4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</a><br>
+  <a href="#4.9">4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
+  <a href="#4.10a">4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
+  <a href="#4.10b">4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
+  <a href="#4.11">4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
+  <a href="#4.12">4.12. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
+  <a href="#4.13">4.13. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
 <h2><a href="#5">5. Internationalization</a></h2>
 <blockquote><p><a href="#5.1">5.1. There's no translation for my language!</a><br>
   <a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a><br>
 <blockquote><p>If you aren't trying some bizarre keystroke combination with some bizarre $TERM entry, chances are you have found a bug. You are welcome to submit it to the <a href="mailto:nano-devel@gnu.org">nano-devel</a> list or to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</p></blockquote>
 <h2><a name="4.7"></a>4.7. Nano crashes when I resize my window. How can I fix that?</h2>
 <blockquote><p>Older versions of nano had this problem, please upgrade to a newer version (at least 0.9.9 would be great, 0.9.12 is recommended).</p></blockquote>
-<h2><a name="4.8"></a>4.8. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
+<h2><a name="4.8"></a>4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</h2>
+<blockquote><p>It's a bug in glibc 2.2.3. You should upgrade to at least glibc 2.2.4.</p></blockquote>
+<h2><a name="4.9"></a>4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
 <blockquote><p>The help (^G) and justify (^J) function were among the last to be written. To show the improvements that nano had over Pico (go to line # and replace), ^_ and ^\ were put on the shortcut list. Later, ^G came back in place of ^_ as it proved to be very valuable for new Unix users. If you use the <b>-p</b> option to nano (or hit Meta-P) you will get the same shortcuts at the bottom as Pico.</p></blockquote>
-<h2><a name="4.9a"></a>4.9a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
+<h2><a name="4.10a"></a>4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
 <blockquote><p>In nano version 0.9.20, the default is to have a completely consistent user interface across all user input functions. This means that regardless of whether you're being asked for a filename to insert or write, or a string to search for, the previous value is already inserted before the cursor. If you prefer the old behavior, use the Pico emulation mode (-p or --pico) or just hit Meta-P while in nano (see the ^G help text for more details).</p></blockquote>
-<h2><a name="4.9b"></a>4.9b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
+<h2><a name="4.10b"></a>4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
 <blockquote><p>It was decided that consistency was nice, but people are used to Pico's inconsistent behavior.  Also, in version 1.1.99pre1, search and replace history was introduced.  If you wish to edit your previous search/replace entry (or any previous entry), you can do so by hitting the up arrow to cycle through your history.  This method allows the best of both worlds: You don't need to erase the previous string if you want to enter a new one, but you can with one keystroke recall previous entries for editing. Therefore there is now no "Pico mode", nano is and has always been a Pico <b>clone</b>, and clones by default should be compatible.</p></blockquote>
-<h2><a name="4.10"></a>4.10. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
+<h2><a name="4.11"></a>4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
 <blockquote><p>You need to make nano your $EDITOR. If you want this to be saved, you should put a line like this in your <b>.bashrc</b> if you use bash (or <b>.zshrc</b> if you believe in zsh):</p>
   <p><b>export EDITOR=/usr/local/bin/nano</b></p>
   <p>or, if you use tcsh, put this in your <b>.cshrc</b> file:</p>
   <p>If you're a mutt user, you should see an effect immediately the next time you log in. No further configuration is needed. However, if you want to let people know you use nano to compose your email messages, you can put a line like this in your <b>.muttrc</b>:</p>
   <p><b>my_hdr X-Composer: nano x.y.z</b></p>
   <p>Again, replace x.y.z with the version of nano you use.</p></blockquote>
-<h2><a name="4.11"></a>4.11. I've compiled nano with color support, but I don't see any color when I run it!</h2>
+<h2><a name="4.12"></a>4.12. I've compiled nano with color support, but I don't see any color when I run it!</h2>
 <blockquote><p>If you want nano to actually use color, you have to specify the color configurations you want it to use in your .nanorc. Some example configurations are in the <b>nanorc.sample</b> that comes with the nano source or your nano package. See Section <a href="#3.9">3.9</a>.</p></blockquote>
-<h2><a name="4.12"></a>4.12. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
+<h2><a name="4.13"></a>4.13. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
 <blockquote><p>Try holding down the Shift key and selecting or pasting the text as you normally would.</p></blockquote>
 <hr width="100%">
 <h1><a name="5"></a>5. Internationalization</h1>
 <blockquote><p>Re-read Section <a href="#7.4">7.4</a> and you should know the answer.</p></blockquote>
 <h2><a name="8"></a>8. ChangeLog</h2>
 <blockquote>
-<p>2006/06/04 - Add minor punctuation, wording, and typo fixes. (DLR)<br>
+<p>
+2006/06/05 - Add a new section 4.8, and move all section 4 entries after it down one number, to explain how to deal with glibc 2.2.3's crashes involving extended regular expressions. (DLR)<br>
+2006/06/04 - Add minor punctuation, wording, and typo fixes. (DLR)<br>
 2006/05/27 - Update section 3.8 to mention the new "Unicode Input" prompt, and how Unicode input only works when Unicode support is enabled. (DLR)<br>
 2006/05/12 - Remove section 4.4, and move all section 4 entries after it up one number, since it no longer applies. Meta-] and Meta-[ are no longer used to indent and unindent marked text, since they require that the bracket matching key change to Ctrl-], which is used as the telnet escape key (found by Chris). Also, make the link to the nano CVS page a bit more readable. (DLR)<br>
 2006/05/08 - Add a new section 4.5, and move all section 4 entries after it down one number, to explain a problem that can occur when holding down keys to generate Meta sequences. Also add a few more capitalization and wording fixes. (Benno Schulenberg, minor tweaks by DLR)<br>
index 18c9032cd4ea6580210482ddf65e0392bcc60ebb..26d6c4aca5c20e012720bdcf6a7e54fc25ff590f 100644 (file)
 #define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
 #define charset(dest, src, n) memset(dest, src, (n) * sizeof(char))
 
-/* Other macros. */
-#ifdef BROKEN_REGEXEC
-#undef regexec
-#define regexec(preg, string, nmatch, pmatch, eflags) safe_regexec(preg, string, nmatch, pmatch, eflags)
-#endif
-
 /* Set a default value for PATH_MAX if there isn't one. */
 #ifndef PATH_MAX
 #define PATH_MAX 4096
index c9e857940952682d4905636e01cb807d61240fe3..c6d5e29a3aa03a2e012db45b95304f04fba005b3 100644 (file)
@@ -677,10 +677,6 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream);
 #endif
 #endif
 #ifdef HAVE_REGEX_H
-#ifdef BROKEN_REGEXEC
-int safe_regexec(const regex_t *preg, const char *string, size_t nmatch,
-       regmatch_t pmatch[], int eflags);
-#endif
 bool regexp_bol_or_eol(const regex_t *preg, const char *string);
 #endif
 #ifndef DISABLE_SPELLER
index 10a4baba8c4923dcffe31c4e826731b1ff65ec56..0758d1ace911ff57571fe8384a085f7c7878e387 100644 (file)
@@ -242,19 +242,6 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
 #endif /* !NANO_TINY && ENABLE_NANORC */
 
 #ifdef HAVE_REGEX_H
-#ifdef BROKEN_REGEXEC
-/* glibc 2.2.3 brain damage: Work around a potential segfault in
- * regexec(). */
-int safe_regexec(const regex_t *preg, const char *string, size_t nmatch,
-       regmatch_t pmatch[], int eflags)
-{
-    if (string != NULL && *string != '\0')
-       return regexec(preg, string, nmatch, pmatch, eflags);
-
-    return REG_NOMATCH;
-}
-#endif
-
 /* Do the compiled regex in preg and the regex in string match the
  * beginning or end of a line? */
 bool regexp_bol_or_eol(const regex_t *preg, const char *string)
@@ -263,7 +250,7 @@ bool regexp_bol_or_eol(const regex_t *preg, const char *string)
        regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
        REG_NOMATCH);
 }
-#endif /* HAVE_REGEX_H */
+#endif
 
 #ifndef DISABLE_SPELLER
 /* Is the word starting at position pos in buf a whole word? */