editors/nano fix needs testing
Christian Weisgerber
naddy at freebsd.org
Sat Oct 4 19:30:12 PDT 2003
The attached patch should fix nano's core dump on -CURRENT (which
is also reproducible on -STABLE with sufficiently aggressive
MALLOC_OPTIONS). I don't really use nano, though, so it would be
nice if some people who do did test this on -CURRENT and -STABLE.
--
Christian "naddy" Weisgerber naddy at mips.inka.de
-------------- next part --------------
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/editors/nano/Makefile,v
retrieving revision 1.23
diff -u -r1.23 Makefile
--- Makefile 4 Oct 2003 23:07:39 -0000 1.23
+++ Makefile 5 Oct 2003 01:16:47 -0000
@@ -7,7 +7,7 @@
PORTNAME= nano
PORTVERSION= 1.2.2
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= editors
MASTER_SITES= http://www.nano-editor.org/dist/v1.2/
@@ -29,10 +29,4 @@
${MKDIR} ${EXAMPLESDIR}
${INSTALL_DATA} ${WRKSRC}/nanorc.sample ${EXAMPLESDIR}
-.include <bsd.port.pre.mk>
-
-.if ${OSVERSION} > 500000
-BROKEN= "memory allocation bug"
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
Index: files/patch-files.c
===================================================================
RCS file: files/patch-files.c
diff -N files/patch-files.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-files.c 5 Oct 2003 01:16:47 -0000
@@ -0,0 +1,56 @@
+
+$FreeBSD$
+
+--- files.c.orig Sun Oct 5 02:30:55 2003
++++ files.c Sun Oct 5 02:35:06 2003
+@@ -1701,16 +1701,17 @@
+ #ifdef NANO_EXTRA
+ static int did_cred = 0;
+ #endif
++ static char *writepath = NULL;
+
+ #if !defined(DISABLE_BROWSER) || (!defined(DISABLE_MOUSE) && defined(NCURSES_MOUSE_VERSION))
+ currshortcut = writefile_list;
+ #endif
+
+- answer = mallocstrcpy(answer, path);
++ writepath = mallocstrcpy(writepath, path);
+
+ if (exiting && ISSET(TEMP_OPT)) {
+ if (filename[0] != '\0') {
+- i = write_file(answer, 0, 0, 0);
++ i = write_file(writepath, 0, 0, 0);
+ display_main_list();
+ return i;
+ } else {
+@@ -1751,24 +1752,24 @@
+ "%s%s%s", _("Write Selection to File"), formatstr, backupstr);
+ } else {
+ if (append == 2)
+- i = statusq(1, writefile_list, answer, 0,
++ i = statusq(1, writefile_list, writepath, 0,
+ "%s%s%s", _("File Name to Prepend to"), formatstr, backupstr);
+ else if (append == 1)
+- i = statusq(1, writefile_list, answer, 0,
++ i = statusq(1, writefile_list, writepath, 0,
+ "%s%s%s", _("File Name to Append to"), formatstr, backupstr);
+ else
+- i = statusq(1, writefile_list, answer, 0,
++ i = statusq(1, writefile_list, writepath, 0,
+ "%s%s%s", _("File Name to Write"), formatstr, backupstr);
+ }
+ #else
+ if (append == 2)
+- i = statusq(1, writefile_list, answer,
++ i = statusq(1, writefile_list, writepath,
+ "%s", _("File Name to Prepend to"));
+ else if (append == 1)
+- i = statusq(1, writefile_list, answer,
++ i = statusq(1, writefile_list, writepath,
+ "%s", _("File Name to Append to"));
+ else
+- i = statusq(1, writefile_list, answer,
++ i = statusq(1, writefile_list, writepath,
+ "%s", _("File Name to Write"));
+ #endif /* !NANO_SMALL */
+
Index: files/patch-search.c
===================================================================
RCS file: files/patch-search.c
diff -N files/patch-search.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-search.c 5 Oct 2003 01:16:47 -0000
@@ -0,0 +1,19 @@
+
+$FreeBSD$
+
+--- search.c.orig Sun Oct 5 02:38:32 2003
++++ search.c Sun Oct 5 02:40:32 2003
+@@ -769,8 +769,12 @@
+
+ int do_gotoline(int line, int save_pos)
+ {
++ static char *linestr = NULL;
++
++ linestr = mallocstrcpy(linestr, answer);
++
+ if (line <= 0) { /* Ask for it */
+- int st = statusq(FALSE, goto_list, line != 0 ? answer : "",
++ int st = statusq(FALSE, goto_list, line != 0 ? linestr : "",
+ #ifndef NANO_SMALL
+ NULL,
+ #endif
More information about the freebsd-ports
mailing list